diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2024-01-01 13:39:51 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-01 13:39:51 +0000 |
commit | dfd64382211317cc46ad337c373492bfc420fa18 (patch) | |
tree | 3b1b2f5f3648da07430f54d1c155ce379a6fa3f7 /script.js | |
parent | 3d15e58b0a30f2ef1e731f9e429f4d3cf1c259c5 (diff) | |
parent | 0ce67cb61806cf43f4d726d4705a4f6fdc2540e6 (diff) | |
download | stable-diffusion-webui-gfx803-dfd64382211317cc46ad337c373492bfc420fa18.tar.gz stable-diffusion-webui-gfx803-dfd64382211317cc46ad337c373492bfc420fa18.tar.bz2 stable-diffusion-webui-gfx803-dfd64382211317cc46ad337c373492bfc420fa18.zip |
Merge branch 'dev' into feat/interrupted-end
Diffstat (limited to 'script.js')
-rw-r--r-- | script.js | 44 |
1 files changed, 37 insertions, 7 deletions
@@ -121,26 +121,56 @@ document.addEventListener("DOMContentLoaded", function() { }); /** - * Add a ctrl+enter as a shortcut to start a generation + * Add keyboard shortcuts: + * Ctrl+Enter to start/restart a generation + * Alt/Option+Enter to skip a generation + * Esc to interrupt a generation */ document.addEventListener('keydown', function(e) { const isEnter = e.key === 'Enter' || e.keyCode === 13; - const isModifierKey = e.metaKey || e.ctrlKey || e.altKey; + const isCtrlKey = e.metaKey || e.ctrlKey; + const isAltKey = e.altKey; + const isEsc = e.key === 'Escape'; - const interruptButton = get_uiCurrentTabContent().querySelector('button[id$=_interrupt]'); const generateButton = get_uiCurrentTabContent().querySelector('button[id$=_generate]'); + const interruptButton = get_uiCurrentTabContent().querySelector('button[id$=_interrupt]'); + const skipButton = get_uiCurrentTabContent().querySelector('button[id$=_skip]'); - if (isEnter && isModifierKey) { + if (isCtrlKey && isEnter) { if (interruptButton.style.display === 'block') { interruptButton.click(); - setTimeout(function() { - generateButton.click(); - }, 500); + const callback = (mutationList) => { + for (const mutation of mutationList) { + if (mutation.type === 'attributes' && mutation.attributeName === 'style') { + if (interruptButton.style.display === 'none') { + generateButton.click(); + observer.disconnect(); + } + } + } + }; + const observer = new MutationObserver(callback); + observer.observe(interruptButton, {attributes: true}); } else { generateButton.click(); } e.preventDefault(); } + + if (isAltKey && isEnter) { + skipButton.click(); + e.preventDefault(); + } + + if (isEsc) { + const globalPopup = document.querySelector('.global-popup'); + const lightboxModal = document.querySelector('#lightboxModal'); + if (!globalPopup || globalPopup.style.display === 'none') { + if (document.activeElement === lightboxModal) return; + interruptButton.click(); + e.preventDefault(); + } + } }); /** |