Preserve scrollTop on popup reopen

bc94ff78007a320cbedf918c75d42939f71d911d

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +7 -1Ignore whitespace
public/scripts/extensions.js+7 -1
@@ -690,7 +690,12 @@ async function showExtensionsDetails() {
690 let popupPromise;690 let popupPromise;
691 try {691 try {
692 // If we are updating an extension, the "old" popup is still active. We should close that.692 // If we are updating an extension, the "old" popup is still active. We should close that.
693 await Popup.util.popups.find(popup => popup.content.querySelector('.extensions_info'))?.completeCancelled();693 let initialScrollTop = 0;
694 const oldPopup = Popup.util.popups.find(popup => popup.content.querySelector('.extensions_info'));
695 if (oldPopup) {
696 initialScrollTop = oldPopup.content.scrollTop;
697 await oldPopup.completeCancelled();
698 }
694 const htmlDefault = $('<div class="marginBot10"><h3 class="textAlignCenter">Built-in Extensions:</h3></div>');699 const htmlDefault = $('<div class="marginBot10"><h3 class="textAlignCenter">Built-in Extensions:</h3></div>');
695 const htmlExternal = $('<div class="marginBot10"><h3 class="textAlignCenter">Installed Extensions:</h3></div>');700 const htmlExternal = $('<div class="marginBot10"><h3 class="textAlignCenter">Installed Extensions:</h3></div>');
696 const htmlLoading = $(`<div class="flex-container alignItemsCenter justifyCenter marginTop10 marginBot5">701 const htmlLoading = $(`<div class="flex-container alignItemsCenter justifyCenter marginTop10 marginBot5">
@@ -749,6 +754,7 @@ async function showExtensionsDetails() {
749 },754 },
750 });755 });
751 popupPromise = popup.show();756 popupPromise = popup.show();
757 popup.content.scrollTop = initialScrollTop;
752 checkForUpdatesManual(abortController.signal).finally(() => htmlLoading.remove());758 checkForUpdatesManual(abortController.signal).finally(() => htmlLoading.remove());
753 } catch (error) {759 } catch (error) {
754 toastr.error(t`Error loading extensions. See browser console for details.`);760 toastr.error(t`Error loading extensions. See browser console for details.`);