aboutsummaryrefslogtreecommitdiffstats
path: root/javascript/dragdrop.js
diff options
context:
space:
mode:
authorConnum <connum@gmail.com>2022-09-26 16:12:55 +0000
committerAUTOMATIC1111 <16777216c@gmail.com>2022-09-27 05:59:40 +0000
commitc0b1177a3203091ca43f2d08f24dd821f1237612 (patch)
treeaf49868aae794db016a7a6a514b709645a6467a6 /javascript/dragdrop.js
parent8dcac9ac81db587cdac59d01db85c01579156392 (diff)
downloadstable-diffusion-webui-gfx803-c0b1177a3203091ca43f2d08f24dd821f1237612.tar.gz
stable-diffusion-webui-gfx803-c0b1177a3203091ca43f2d08f24dd821f1237612.tar.bz2
stable-diffusion-webui-gfx803-c0b1177a3203091ca43f2d08f24dd821f1237612.zip
refactored image paste handling to fill unset images successively, then replace last existing image (fixes #981)
Diffstat (limited to 'javascript/dragdrop.js')
-rw-r--r--javascript/dragdrop.js24
1 files changed, 15 insertions, 9 deletions
diff --git a/javascript/dragdrop.js b/javascript/dragdrop.js
index c01f66e2..5aac57f7 100644
--- a/javascript/dragdrop.js
+++ b/javascript/dragdrop.js
@@ -68,13 +68,19 @@ window.addEventListener('paste', e => {
if ( ! isValidImageList( files ) ) {
return;
}
- [...gradioApp().querySelectorAll('input[type=file][accept="image/x-png,image/gif,image/jpeg"]')]
- .filter(input => !input.matches('.\\!hidden input[type=file]'))
- .forEach(input => {
- input.files = files;
- input.dispatchEvent(new Event('change'))
- });
- [...gradioApp().querySelectorAll('[data-testid="image"]')]
- .filter(imgWrap => !imgWrap.closest('.\\!hidden'))
- .forEach(imgWrap => dropReplaceImage( imgWrap, files ));
+
+ const visibleImageFields = [...gradioApp().querySelectorAll('[data-testid="image"]')]
+ .filter(el => uiElementIsVisible(el));
+ if ( ! visibleImageFields.length ) {
+ return;
+ }
+
+ const firstFreeImageField = visibleImageFields
+ .filter(el => el.querySelector('input[type=file]'))?.[0];
+
+ dropReplaceImage(
+ firstFreeImageField ?
+ firstFreeImageField :
+ visibleImageFields[visibleImageFields.length - 1]
+ , files );
});