Restore scroll position on page if giving active element focus changes it
This commit is contained in:
parent
4b3c5bc24b
commit
c4067c5626
1 changed files with 14 additions and 2 deletions
|
@ -92,14 +92,26 @@ function check_gallery(id_gallery){
|
||||||
if (prevSelectedIndex !== -1 && galleryButtons.length>prevSelectedIndex && !galleryBtnSelected) {
|
if (prevSelectedIndex !== -1 && galleryButtons.length>prevSelectedIndex && !galleryBtnSelected) {
|
||||||
// automatically re-open previously selected index (if exists)
|
// automatically re-open previously selected index (if exists)
|
||||||
activeElement = gradioApp().activeElement;
|
activeElement = gradioApp().activeElement;
|
||||||
|
let scrollX = window.scrollX;
|
||||||
|
let scrollY = window.scrollY;
|
||||||
|
|
||||||
galleryButtons[prevSelectedIndex].click();
|
galleryButtons[prevSelectedIndex].click();
|
||||||
showGalleryImage();
|
showGalleryImage();
|
||||||
|
|
||||||
|
// When the gallery button is clicked, it gains focus and scrolls itself into view
|
||||||
|
// We need to scroll back to the previous position
|
||||||
|
setTimeout(function (){
|
||||||
|
window.scrollTo(scrollX, scrollY);
|
||||||
|
}, 50);
|
||||||
|
|
||||||
if(activeElement){
|
if(activeElement){
|
||||||
// i fought this for about an hour; i don't know why the focus is lost or why this helps recover it
|
// i fought this for about an hour; i don't know why the focus is lost or why this helps recover it
|
||||||
// if somenoe has a better solution please by all means
|
// if someone has a better solution please by all means
|
||||||
setTimeout(function() { activeElement.focus() }, 1);
|
setTimeout(function (){
|
||||||
|
activeElement.focus({
|
||||||
|
preventScroll: true // Refocus the element that was focused before the gallery was opened without scrolling to it
|
||||||
|
})
|
||||||
|
}, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue