Preserve scrollTop on popup reopen

bc94ff78007a320cbedf918c75d42939f71d911d

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

1 files changed, +7 -1Showing whitespace changes
public/scripts/extensions.js+7 -1
@@ -690,7 +690,12 @@ async function showExtensionsDetails() {
690690 let popupPromise;
691691 try {
692692 // 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+ }
694699 const htmlDefault = $('<div class="marginBot10"><h3 class="textAlignCenter">Built-in Extensions:</h3></div>');
695700 const htmlExternal = $('<div class="marginBot10"><h3 class="textAlignCenter">Installed Extensions:</h3></div>');
696701 const htmlLoading = $(`<div class="flex-container alignItemsCenter justifyCenter marginTop10 marginBot5">
@@ -749,6 +754,7 @@ async function showExtensionsDetails() {
749754 },
750755 });
751756 popupPromise = popup.show();
757+ popup.content.scrollTop = initialScrollTop;
752758 checkForUpdatesManual(abortController.signal).finally(() => htmlLoading.remove());
753759 } catch (error) {
754760 toastr.error(t`Error loading extensions. See browser console for details.`);