diff options
author | Thottyottyotty <thot@thiic.cc> | 2023-05-18 23:09:09 +0000 |
---|---|---|
committer | Thottyottyotty <thot@thiic.cc> | 2023-05-18 23:09:09 +0000 |
commit | e373fd0c009beed4cd78af78583bf71b425b118e (patch) | |
tree | 37dee738eb8c66fb0ed9de1992c4296287678bdd | |
parent | a375acdd2635fdfeb3d77a0715b7df7e6350dd62 (diff) | |
download | stable-diffusion-webui-gfx803-e373fd0c009beed4cd78af78583bf71b425b118e.tar.gz stable-diffusion-webui-gfx803-e373fd0c009beed4cd78af78583bf71b425b118e.tar.bz2 stable-diffusion-webui-gfx803-e373fd0c009beed4cd78af78583bf71b425b118e.zip |
rewrite uiElementIsVisible
rewrite visibility checking to be more generic/cleaner as well as add functionality to check if the element is scrolled on screen for more intuitive paste-target selection
-rw-r--r-- | script.js | 24 |
1 files changed, 11 insertions, 13 deletions
@@ -92,19 +92,17 @@ document.addEventListener('keydown', function(e) { * checks that a UI element is not in another hidden element or tab content */ function uiElementIsVisible(el) { - let isVisible = !el.closest('.\\!hidden'); - if (!isVisible) { - return false; + if (el === document) { + return true; } - while ((isVisible = el.closest('.tabitem')?.style.display) !== 'none') { - if (!isVisible) { - return false; - } else if (el.parentElement) { - el = el.parentElement; - } else { - break; - } - } - return isVisible; + const computedStyle = getComputedStyle(el); + const isVisible = computedStyle.display !== 'none'; + + const clRect = el.getBoundingClientRect(); + const windowHeight = window.innerHeight; + const onScreen = clRect.bottom > 0 && clRect.top < windowHeight; + + if (!isVisible || !onScreen) return false; + return uiElementIsVisible(el.parentNode); } |