From fcc5224904648a8e6eb528d7603154160a20022f Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Wed, 2 Feb 2022 01:39:05 +0000 Subject: gentoo resync : 02.02.2022 --- .../files/seamonkey-2.53.10.2-ownertab.patch | 249 +++++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 www-client/seamonkey/files/seamonkey-2.53.10.2-ownertab.patch (limited to 'www-client/seamonkey/files') diff --git a/www-client/seamonkey/files/seamonkey-2.53.10.2-ownertab.patch b/www-client/seamonkey/files/seamonkey-2.53.10.2-ownertab.patch new file mode 100644 index 000000000000..02140bd5e8f7 --- /dev/null +++ b/www-client/seamonkey/files/seamonkey-2.53.10.2-ownertab.patch @@ -0,0 +1,249 @@ +# HG changeset patch +# User Dmitry Butskoy +# Date 1628960364 -7200 +# Parent 45d5ea1452b1c406303ff3be289df08cde3d5a04 +Bug 1623054 - Set owner tab for proper tab focus handling after close. r=IanN a=IanN +Upstream bug-report: https://bugzilla.mozilla.org/show_bug.cgi?id=1623054 + +diff --git seamonkey-2.53.10.2/comm/suite/app/profile/suite-prefs.js seamonkey-2.53.10.2/comm/suite/app/profile/suite-prefs.js +--- seamonkey-2.53.10.2/comm/suite/app/profile/suite-prefs.js ++++ seamonkey-2.53.10.2/comm/suite/app/profile/suite-prefs.js +@@ -224,16 +224,17 @@ pref("browser.tabs.autoHide", false); + pref("browser.tabs.forceHide", false); + pref("browser.tabs.closeWindowWithLastTab", true); + pref("browser.tabs.warnOnClose", true); + pref("browser.tabs.warnOnCloseOther", true); + pref("browser.tabs.warnOnOpen", true); + pref("browser.tabs.maxOpenBeforeWarn", 15); + pref("browser.tabs.insertRelatedAfterCurrent", true); + pref("browser.tabs.insertAllTabsAfterCurrent", false); ++pref("browser.tabs.selectOwnerOnClose", true); + pref("browser.tabs.avoidBrowserFocus", false); + + // For future use + pref("browser.tabs.loadBookmarksInBackground", false); + + // how many browsers can be saved in the DOM (by the tabbed browser) + pref("browser.tabs.max_tabs_undo", 3); + // should popups by saved in the DOM (by the tabbed browser) +diff --git seamonkey-2.53.10.2/comm/suite/base/content/utilityOverlay.js seamonkey-2.53.10.2/comm/suite/base/content/utilityOverlay.js +--- seamonkey-2.53.10.2/comm/suite/base/content/utilityOverlay.js ++++ seamonkey-2.53.10.2/comm/suite/base/content/utilityOverlay.js +@@ -1637,16 +1637,17 @@ function openLinkIn(url, where, params) + // fall through + case "tab": + var browser = w.getBrowser(); + var tab = browser.addTab(url, { + referrerURI: aReferrerURI, + referrerPolicy: aReferrerPolicy, + charset: aCharset, + postData: aPostData, ++ ownerTab: loadInBackground ? null : browser.selectedTab, + allowThirdPartyFixup: aAllowThirdPartyFixup, + relatedToCurrent: aRelatedToCurrent, + allowMixedContent: aAllowMixedContent, + noReferrer: aNoReferrer, + userContextId: aUserContextId, + originPrincipal: aPrincipal, + triggeringPrincipal: aTriggeringPrincipal, + }); +diff --git seamonkey-2.53.10.2/comm/suite/browser/tabbrowser.xml seamonkey-2.53.10.2/comm/suite/browser/tabbrowser.xml +--- seamonkey-2.53.10.2/comm/suite/browser/tabbrowser.xml ++++ seamonkey-2.53.10.2/comm/suite/browser/tabbrowser.xml +@@ -1152,16 +1152,27 @@ + newBrowser.docShellIsActive = this.mCurrentTab.linkedBrowser.docShellIsActive; + if (this.mCurrentBrowser) { + this.mCurrentBrowser.droppedLinkHandler = null; + this.mCurrentBrowser.docShellIsActive = false; + this.mCurrentBrowser.removeAttribute("primary"); + this.finder.mListeners.forEach(l => this.mCurrentBrowser.finder.removeResultListener(l)); + } + ++ let oldTab = this.mCurrentTab; ++ ++ // Preview mode should not reset the owner. ++ if (!this._previewMode && !oldTab.selected) ++ oldTab.owner = null; ++ ++ let lastRelatedTab = this.mLastRelatedIndex ? this.tabs[this.mLastRelatedIndex] : null; ++ if (lastRelatedTab && !lastRelatedTab.selected) { ++ lastRelatedTab.owner = null; ++ } ++ + newBrowser.setAttribute("primary", "true"); + this.mCurrentBrowser = newBrowser; + this.mCurrentTab = this.selectedTab; + this.mCurrentTab.removeAttribute("unread"); + this.finder.mListeners.forEach(l => this.mCurrentBrowser.finder.addResultListener(l)); + + var tabListener = this.mTabListeners[this.tabContainer.selectedIndex]; + +@@ -1445,16 +1456,19 @@ + opener: null, + }; + } + + params.focusNewTab = params.inBackground != null ? + !params.inBackground : + !Services.prefs.getBoolPref("browser.tabs.loadInBackground"); + ++ if (params.focusNewTab) ++ params.ownerTab = this.selectedTab; ++ + return this.addTab(aURI, params); + ]]> + + + + + + +@@ -1556,43 +1570,49 @@ + + + + + index) + newIndex = currentIndex - 1; + else if (currentIndex < index) + newIndex = currentIndex; +@@ -2057,23 +2092,30 @@ + + if (oldBrowser == this.mCurrentBrowser) + this.mCurrentBrowser = null; + + // Invalidate browsers cache, as the tab is removed from the + // tab container. + this._browsers = null; + +- // Clean up before/afterselected attributes before removing the tab ++ let owner = ("owner" in aTab) ? aTab.owner : null; ++ ++ // Clean up before/after selected attributes before removing the ++ // tab. + aTab._selected = false; + aTab.remove(); + + // When the current tab is removed select a new tab + // and fire select events on tabpanels and tabs +- if (this.mPreviousTab && (aTab == this.mCurrentTab)) ++ if (owner && !owner.hidden && !owner.closing && ++ Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")) { ++ this.selectedTab = owner; ++ } ++ else if (this.mPreviousTab && (aTab == this.mCurrentTab)) + this.selectedTab = this.mPreviousTab; + else { + this.tabContainer.selectedIndex = newIndex; + + // We need to explicitly clear this, because updateCurrentBrowser + // doesn't get called for a background tab + this.mPreviousTab = null; + } -- cgit v1.2.3