Merge pull request #10534 from thot-experiment/dev

rewrite uiElementIsVisible
This commit is contained in:
AUTOMATIC1111 2023-05-19 09:53:02 +03:00 committed by GitHub
commit fe7bcbe340
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 14 deletions

View File

@ -81,7 +81,10 @@ window.addEventListener('paste', e => {
}
const visibleImageFields = [...gradioApp().querySelectorAll('[data-testid="image"]')]
.filter(el => uiElementIsVisible(el));
.filter(el => uiElementIsVisible(el))
.sort((a,b) => uiElementInSight(b) - uiElementInSight(a));
if (!visibleImageFields.length) {
return;
}

View File

@ -92,19 +92,21 @@ 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;
const computedStyle = getComputedStyle(el);
const isVisible = computedStyle.display !== 'none';
if (!isVisible) return false;
return uiElementIsVisible(el.parentNode);
}
}
return isVisible;
function uiElementInSight(el) {
const clRect = el.getBoundingClientRect();
const windowHeight = window.innerHeight;
const isOnScreen = clRect.bottom > 0 && clRect.top < windowHeight;
return isOnScreen;
}