From 0dbefd7283fdf3483c14eff579d152264037e0de Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Wed, 16 Nov 2022 22:07:31 +1100 Subject: [PATCH 01/24] =?UTF-8?q?=F0=9F=9A=A7=20Individual=20Tabs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/content/browser-sidebar-js.patch | 76 ++++++++++++++++++- 1 file changed, 72 insertions(+), 4 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index 219af6c2..8a53a99f 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index f09e37fc42f7754f7f3687884ead25124c1b2076..e1833bbfd8a8ed7da767349f886d554f3dd795f3 100644 +index f09e37fc42f7754f7f3687884ead25124c1b2076..f94a47f909b9dd17b6673387f44a01d0c5340d31 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -165,7 +165,70 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..e1833bbfd8a8ed7da767349f886d554f } } }, -@@ -573,6 +652,10 @@ var SidebarUI = { +@@ -510,6 +589,7 @@ var SidebarUI = { + * @return {Promise} + */ + async show(commandID, triggerNode) { ++ console.log("Trying to open sidebar"); + let panelType = commandID.substring(4, commandID.length - 7); + Services.telemetry.keyedScalarAdd("sidebar.opened", panelType, 1); + +@@ -539,6 +619,7 @@ var SidebarUI = { + * @return {Promise} + */ + async showInitially(commandID) { ++ console.log("Show initially?"); + let panelType = commandID.substring(4, commandID.length - 7); + Services.telemetry.keyedScalarAdd("sidebar.opened", panelType, 1); + +@@ -562,6 +643,46 @@ var SidebarUI = { + */ + _show(commandID) { + return new Promise(resolve => { ++ ++ console.log("Opening sidebar " + commandID); ++ ++ //try and find browser with id sidebar-browser- ++ if (!document.getElementById("sidebar-browser-" + commandID)){ ++ //create a new browser for the sidebar with id "sidebar-browser-" ++ let browser = document.createXULElement("browser"); ++ browser.setAttribute("id", "sidebar-browser-" + commandID); ++ browser.setAttribute("autoscroll", "false"); ++ browser.setAttribute("disablehistory", "true"); ++ browser.setAttribute("disablefullscreen", "true"); ++ browser.setAttribute("tooltip", "aHTMLTooltip"); ++ browser.setAttribute("class", "sidebar-tab"); ++ browser.setAttribute("sidebarcommand", commandID); ++ ++ //temp here ++ browser.setAttribute("style", "min-width: 14em; width: 18em; max-width: 36em; -moz-box-flex: 1;"); ++ ++ //append into _box ++ this._box.appendChild(browser); ++ this._browser = browser; ++ } ++ else { ++ //browser already exists, get it ++ let browser = document.getElementById("sidebar-browser-" + commandID); ++ this._browser = browser; ++ } ++ ++ let browsers = document.querySelectorAll("[id^='sidebar-browser-']"); ++ //hide all of them except the one we want to show ++ for (let i = 0; i < browsers.length; i++) { ++ if (browsers[i].id != "sidebar-browser-" + commandID) { ++ browsers[i].setAttribute("hidden", "true"); ++ } ++ else ++ { ++ browsers[i].removeAttribute("hidden"); ++ } ++ } ++ + this.selectMenuItem(commandID); + + this._box.hidden = this._splitter.hidden = false; +@@ -573,10 +694,15 @@ var SidebarUI = { this._box.setAttribute("sidebarcommand", commandID); this.lastOpenedId = commandID; @@ -176,7 +239,12 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..e1833bbfd8a8ed7da767349f886d554f let { url, title, sourceL10nEl } = this.sidebars.get(commandID); this.title = title; // Keep the title element in sync with any l10n changes. -@@ -618,6 +701,26 @@ var SidebarUI = { + this.observeTitleChanges(sourceL10nEl); ++ console.log("Setting SRC to " + url + " for " + this.browser.id); + this.browser.setAttribute("src", url); // kick off async load + + if (this.browser.contentDocument.location.href != url) { +@@ -618,6 +744,26 @@ var SidebarUI = { this.selectMenuItem(""); @@ -203,7 +271,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..e1833bbfd8a8ed7da767349f886d554f // Replace the document currently displayed in the sidebar with about:blank // so that we can free memory by unloading the page. We need to explicitly // create a new content viewer because the old one doesn't get destroyed -@@ -641,25 +744,112 @@ var SidebarUI = { +@@ -641,25 +787,112 @@ var SidebarUI = { * none if the argument is an empty string. */ selectMenuItem(commandID) { From 6f4c7fbbdda4fc49f86498840a0db1b8c110b59e Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Wed, 16 Nov 2022 23:56:57 +1100 Subject: [PATCH 02/24] =?UTF-8?q?=F0=9F=92=AC=20Sidebar=20Active=20Tabs=20?= =?UTF-8?q?Settings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/browser/components/preferences/home-inc-xhtml.patch | 0 src/browser/components/preferences/home-js.patch | 0 .../en-US/browser/preferences/preferences-ftl.patch | 8 ++++++-- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 src/browser/components/preferences/home-inc-xhtml.patch create mode 100644 src/browser/components/preferences/home-js.patch diff --git a/src/browser/components/preferences/home-inc-xhtml.patch b/src/browser/components/preferences/home-inc-xhtml.patch new file mode 100644 index 00000000..e69de29b diff --git a/src/browser/components/preferences/home-js.patch b/src/browser/components/preferences/home-js.patch new file mode 100644 index 00000000..e69de29b diff --git a/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch b/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch index 7ea0a6bd..9e3b6d16 100644 --- a/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch +++ b/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch @@ -1,8 +1,8 @@ diff --git a/browser/locales/en-US/browser/preferences/preferences.ftl b/browser/locales/en-US/browser/preferences/preferences.ftl -index b10403800c7aafe97471474f6bddb6098ce21a82..b39593816149a71a1e6b40626e304e367359fd02 100644 +index e51ab66d5bdbda020e11f715080e2d716b6385ef..5530d7b452c72900a093b02133714daf413c30b4 100644 --- a/browser/locales/en-US/browser/preferences/preferences.ftl +++ b/browser/locales/en-US/browser/preferences/preferences.ftl -@@ -1413,3 +1413,11 @@ httpsonly-radio-disabled = +@@ -1424,3 +1424,15 @@ httpsonly-radio-disabled = desktop-folder-name = Desktop downloads-folder-name = Downloads choose-download-folder-title = Choose Download Folder: @@ -14,3 +14,7 @@ index b10403800c7aafe97471474f6bddb6098ce21a82..b39593816149a71a1e6b40626e304e36 + +preferences-sidebar-extensions-visible = + .label = Show available extensions on the sidebar ++ ++preferences-sidebar-active-tabs = Keep sidebar tabs active even when closed ++preferences-sidebar-active-tabs-tooltip = When enabled, sidebar tabs will remain active even when closed. When disabled, sidebar tabs will be closed when you click on another tab. ++ From b6d806d5814e583a02352e36549cc8697b08da38 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Fri, 18 Nov 2022 12:22:02 +1100 Subject: [PATCH 03/24] =?UTF-8?q?=E2=9C=A8=20Bind=20Keep=20Tabs=20Active?= =?UTF-8?q?=20to=20Preference?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/content/browser-sidebar-js.patch | 120 +++++++++++------- 1 file changed, 75 insertions(+), 45 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index 8a53a99f..477200c7 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index f09e37fc42f7754f7f3687884ead25124c1b2076..f94a47f909b9dd17b6673387f44a01d0c5340d31 100644 +index f09e37fc42f7754f7f3687884ead25124c1b2076..35f403b1cfc17b27e06b16957d2ed96fd83d16f9 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -84,8 +84,23 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..f94a47f909b9dd17b6673387f44a01d0 DEFAULT_SIDEBAR_ID: "viewBookmarksSidebar", // lastOpenedId is set in show() but unlike currentID it's not cleared out on hide -@@ -78,6 +116,8 @@ var SidebarUI = { +@@ -76,8 +114,23 @@ var SidebarUI = { + } + return (this.__title = document.getElementById("sidebar-title")); }, ++ ++ get keepTabsActivePref() { ++ if (this._keepTabsActive) { ++ return this._keepTabsActive; ++ } ++ return (async () => { ++ try { ++ return await (this.keepTabsActivePref = Services.prefs.getBoolPref("pulse.sidebar.keeptabsactive.enabled")); ++ } catch(e) { ++ return 1; ++ } ++ })(); ++ }, _splitter: null, _icon: null, + _sidebarIcons: null, @@ -93,7 +108,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..f94a47f909b9dd17b6673387f44a01d0 _reversePositionButton: null, _switcherPanel: null, _switcherTarget: null, -@@ -110,10 +150,40 @@ var SidebarUI = { +@@ -110,15 +163,54 @@ var SidebarUI = { this._switcherTarget = document.getElementById("sidebar-switcher-target"); this._switcherArrow = document.getElementById("sidebar-switcher-arrow"); @@ -134,7 +149,21 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..f94a47f909b9dd17b6673387f44a01d0 this._inited = true; Services.obs.addObserver(this, "intl:app-locales-changed"); -@@ -159,17 +229,26 @@ var SidebarUI = { + + this._initDeferred.resolve(); ++ ++ if (this.keepTabsActivePref){ ++ //if element by id sidebar exists destroy it ++ if (document.getElementById("sidebar")){ ++ document.getElementById("sidebar").remove(); ++ } ++ } ++ ++ + }, + + uninit() { +@@ -159,17 +251,26 @@ var SidebarUI = { /** * The handler for Services.obs.addObserver. **/ @@ -165,7 +194,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..f94a47f909b9dd17b6673387f44a01d0 } } }, -@@ -510,6 +589,7 @@ var SidebarUI = { +@@ -510,6 +611,7 @@ var SidebarUI = { * @return {Promise} */ async show(commandID, triggerNode) { @@ -173,7 +202,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..f94a47f909b9dd17b6673387f44a01d0 let panelType = commandID.substring(4, commandID.length - 7); Services.telemetry.keyedScalarAdd("sidebar.opened", panelType, 1); -@@ -539,6 +619,7 @@ var SidebarUI = { +@@ -539,6 +641,7 @@ var SidebarUI = { * @return {Promise} */ async showInitially(commandID) { @@ -181,54 +210,55 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..f94a47f909b9dd17b6673387f44a01d0 let panelType = commandID.substring(4, commandID.length - 7); Services.telemetry.keyedScalarAdd("sidebar.opened", panelType, 1); -@@ -562,6 +643,46 @@ var SidebarUI = { +@@ -562,6 +665,47 @@ var SidebarUI = { */ _show(commandID) { return new Promise(resolve => { -+ + console.log("Opening sidebar " + commandID); -+ -+ //try and find browser with id sidebar-browser- -+ if (!document.getElementById("sidebar-browser-" + commandID)){ -+ //create a new browser for the sidebar with id "sidebar-browser-" -+ let browser = document.createXULElement("browser"); -+ browser.setAttribute("id", "sidebar-browser-" + commandID); -+ browser.setAttribute("autoscroll", "false"); -+ browser.setAttribute("disablehistory", "true"); -+ browser.setAttribute("disablefullscreen", "true"); -+ browser.setAttribute("tooltip", "aHTMLTooltip"); -+ browser.setAttribute("class", "sidebar-tab"); -+ browser.setAttribute("sidebarcommand", commandID); -+ -+ //temp here -+ browser.setAttribute("style", "min-width: 14em; width: 18em; max-width: 36em; -moz-box-flex: 1;"); -+ -+ //append into _box -+ this._box.appendChild(browser); -+ this._browser = browser; -+ } -+ else { -+ //browser already exists, get it -+ let browser = document.getElementById("sidebar-browser-" + commandID); -+ this._browser = browser; -+ } -+ -+ let browsers = document.querySelectorAll("[id^='sidebar-browser-']"); -+ //hide all of them except the one we want to show -+ for (let i = 0; i < browsers.length; i++) { -+ if (browsers[i].id != "sidebar-browser-" + commandID) { -+ browsers[i].setAttribute("hidden", "true"); ++ if (this._keepTabsActive){ ++ //try and find browser with id sidebar-browser- ++ if (!document.getElementById("sidebar-browser-" + commandID)){ ++ //create a new browser for the sidebar with id "sidebar-browser-" ++ let browser = document.createXULElement("browser"); ++ browser.setAttribute("id", "sidebar-browser-" + commandID); ++ browser.setAttribute("autoscroll", "false"); ++ browser.setAttribute("disablehistory", "true"); ++ browser.setAttribute("disablefullscreen", "true"); ++ browser.setAttribute("tooltip", "aHTMLTooltip"); ++ browser.setAttribute("class", "sidebar-tab"); ++ browser.setAttribute("sidebarcommand", commandID); ++ ++ //temp here ++ browser.setAttribute("style", "min-width: 14em; width: 18em; max-width: 36em; -moz-box-flex: 1;"); ++ ++ //append into _box ++ this._box.appendChild(browser); ++ this._browser = browser; + } -+ else -+ { -+ browsers[i].removeAttribute("hidden"); ++ else { ++ //browser already exists, get it ++ let browser = document.getElementById("sidebar-browser-" + commandID); ++ this._browser = browser; ++ } ++ ++ let browsers = document.querySelectorAll("[id^='sidebar-browser-']"); ++ //hide all of them except the one we want to show ++ for (let i = 0; i < browsers.length; i++) { ++ if (browsers[i].id != "sidebar-browser-" + commandID) { ++ browsers[i].setAttribute("hidden", "true"); ++ } ++ else ++ { ++ browsers[i].removeAttribute("hidden"); ++ } + } + } ++ + this.selectMenuItem(commandID); this._box.hidden = this._splitter.hidden = false; -@@ -573,10 +694,15 @@ var SidebarUI = { +@@ -573,10 +717,15 @@ var SidebarUI = { this._box.setAttribute("sidebarcommand", commandID); this.lastOpenedId = commandID; @@ -244,7 +274,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..f94a47f909b9dd17b6673387f44a01d0 this.browser.setAttribute("src", url); // kick off async load if (this.browser.contentDocument.location.href != url) { -@@ -618,6 +744,26 @@ var SidebarUI = { +@@ -618,6 +767,26 @@ var SidebarUI = { this.selectMenuItem(""); @@ -271,7 +301,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..f94a47f909b9dd17b6673387f44a01d0 // Replace the document currently displayed in the sidebar with about:blank // so that we can free memory by unloading the page. We need to explicitly // create a new content viewer because the old one doesn't get destroyed -@@ -641,25 +787,112 @@ var SidebarUI = { +@@ -641,25 +810,112 @@ var SidebarUI = { * none if the argument is an empty string. */ selectMenuItem(commandID) { From 1e6cd0553b3edb0522a80dc6583bc67d21160326 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Fri, 18 Nov 2022 12:26:58 +1100 Subject: [PATCH 04/24] =?UTF-8?q?=F0=9F=94=87=20Remove=20Test=20Logs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/content/browser-sidebar-js.patch | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index 477200c7..204a9388 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index f09e37fc42f7754f7f3687884ead25124c1b2076..35f403b1cfc17b27e06b16957d2ed96fd83d16f9 100644 +index f09e37fc42f7754f7f3687884ead25124c1b2076..9ddb76aecd1d74ddee7910913d28d0006e6d66a3 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -194,28 +194,11 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..35f403b1cfc17b27e06b16957d2ed96f } } }, -@@ -510,6 +611,7 @@ var SidebarUI = { - * @return {Promise} - */ - async show(commandID, triggerNode) { -+ console.log("Trying to open sidebar"); - let panelType = commandID.substring(4, commandID.length - 7); - Services.telemetry.keyedScalarAdd("sidebar.opened", panelType, 1); - -@@ -539,6 +641,7 @@ var SidebarUI = { - * @return {Promise} - */ - async showInitially(commandID) { -+ console.log("Show initially?"); - let panelType = commandID.substring(4, commandID.length - 7); - Services.telemetry.keyedScalarAdd("sidebar.opened", panelType, 1); - -@@ -562,6 +665,47 @@ var SidebarUI = { +@@ -562,6 +663,45 @@ var SidebarUI = { */ _show(commandID) { return new Promise(resolve => { -+ console.log("Opening sidebar " + commandID); -+ if (this._keepTabsActive){ ++ if (this.keepTabsActivePref){ + //try and find browser with id sidebar-browser- + if (!document.getElementById("sidebar-browser-" + commandID)){ + //create a new browser for the sidebar with id "sidebar-browser-" @@ -230,7 +213,6 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..35f403b1cfc17b27e06b16957d2ed96f + + //temp here + browser.setAttribute("style", "min-width: 14em; width: 18em; max-width: 36em; -moz-box-flex: 1;"); -+ + //append into _box + this._box.appendChild(browser); + this._browser = browser; @@ -258,7 +240,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..35f403b1cfc17b27e06b16957d2ed96f this.selectMenuItem(commandID); this._box.hidden = this._splitter.hidden = false; -@@ -573,10 +717,15 @@ var SidebarUI = { +@@ -573,6 +713,10 @@ var SidebarUI = { this._box.setAttribute("sidebarcommand", commandID); this.lastOpenedId = commandID; @@ -269,12 +251,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..35f403b1cfc17b27e06b16957d2ed96f let { url, title, sourceL10nEl } = this.sidebars.get(commandID); this.title = title; // Keep the title element in sync with any l10n changes. - this.observeTitleChanges(sourceL10nEl); -+ console.log("Setting SRC to " + url + " for " + this.browser.id); - this.browser.setAttribute("src", url); // kick off async load - - if (this.browser.contentDocument.location.href != url) { -@@ -618,6 +767,26 @@ var SidebarUI = { +@@ -618,22 +762,45 @@ var SidebarUI = { this.selectMenuItem(""); @@ -301,7 +278,33 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..35f403b1cfc17b27e06b16957d2ed96f // Replace the document currently displayed in the sidebar with about:blank // so that we can free memory by unloading the page. We need to explicitly // create a new content viewer because the old one doesn't get destroyed -@@ -641,25 +810,112 @@ var SidebarUI = { + // until about:blank has loaded (which does not happen as long as the + // element is hidden). +- this.browser.setAttribute("src", "about:blank"); +- this.browser.docShell.createAboutBlankContentViewer(null, null); ++ ++ if (!this.keepTabsActivePref){ ++ this.browser.setAttribute("src", "about:blank"); ++ this.browser.docShell.createAboutBlankContentViewer(null, null); ++ } + + this._box.removeAttribute("checked"); + this._box.hidden = this._splitter.hidden = true; + +- let selBrowser = gBrowser.selectedBrowser; +- selBrowser.focus(); +- if (triggerNode) { +- updateToggleControlLabel(triggerNode); +- } ++ // let selBrowser = gBrowser.selectedBrowser; ++ // selBrowser.focus(); ++ // if (triggerNode) { ++ // updateToggleControlLabel(triggerNode); ++ // } + }, + + /** +@@ -641,25 +808,112 @@ var SidebarUI = { * none if the argument is an empty string. */ selectMenuItem(commandID) { From 1b6b7118ba3c38bc973f9e5a2f364d4c8ba5209a Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 19 Nov 2022 09:46:57 +1100 Subject: [PATCH 05/24] =?UTF-8?q?=F0=9F=90=9B=20=20Don't=20load=20again=20?= =?UTF-8?q?if=20active?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/content/browser-sidebar-js.patch | 54 +++++++++++++++---- 1 file changed, 45 insertions(+), 9 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index 204a9388..69d4a10e 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index f09e37fc42f7754f7f3687884ead25124c1b2076..9ddb76aecd1d74ddee7910913d28d0006e6d66a3 100644 +index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e729ec7a05 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -159,7 +159,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9ddb76aecd1d74ddee7910913d28d000 + } + } + -+ ++ this.loadedSidebars = []; }, uninit() { @@ -194,7 +194,34 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9ddb76aecd1d74ddee7910913d28d000 } } }, -@@ -562,6 +663,45 @@ var SidebarUI = { +@@ -488,6 +589,10 @@ var SidebarUI = { + }, + + _loadSidebarExtension(commandID) { ++ if (this.keepTabsActivePref && this.loadedSidebars.includes(commandID)) { ++ return; ++ } ++ + let sidebar = this.sidebars.get(commandID); + let { extensionId } = sidebar; + if (extensionId) { +@@ -526,6 +631,7 @@ var SidebarUI = { + } + + this._fireFocusedEvent(); ++ this.loadedSidebars.push(commandID); + return true; + }); + }, +@@ -549,6 +655,7 @@ var SidebarUI = { + } + return this._show(commandID).then(() => { + this._loadSidebarExtension(commandID); ++ this.loadedSidebars.push(commandID); + return true; + }); + }, +@@ -562,9 +669,46 @@ var SidebarUI = { */ _show(commandID) { return new Promise(resolve => { @@ -210,10 +237,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9ddb76aecd1d74ddee7910913d28d000 + browser.setAttribute("tooltip", "aHTMLTooltip"); + browser.setAttribute("class", "sidebar-tab"); + browser.setAttribute("sidebarcommand", commandID); -+ -+ //temp here + browser.setAttribute("style", "min-width: 14em; width: 18em; max-width: 36em; -moz-box-flex: 1;"); -+ //append into _box + this._box.appendChild(browser); + this._browser = browser; + } @@ -240,7 +264,11 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9ddb76aecd1d74ddee7910913d28d000 this.selectMenuItem(commandID); this._box.hidden = this._splitter.hidden = false; -@@ -573,6 +713,10 @@ var SidebarUI = { ++ //Set position reloads the page just as a note + this.setPosition(); + + this.hideSwitcherPanel(); +@@ -573,13 +717,16 @@ var SidebarUI = { this._box.setAttribute("sidebarcommand", commandID); this.lastOpenedId = commandID; @@ -251,7 +279,15 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9ddb76aecd1d74ddee7910913d28d000 let { url, title, sourceL10nEl } = this.sidebars.get(commandID); this.title = title; // Keep the title element in sync with any l10n changes. -@@ -618,22 +762,45 @@ var SidebarUI = { + this.observeTitleChanges(sourceL10nEl); + this.browser.setAttribute("src", url); // kick off async load +- +- if (this.browser.contentDocument.location.href != url) { ++ if (!this.loadedSidebars.includes(commandID)) { + this.browser.addEventListener( + "load", + event => { +@@ -618,22 +765,45 @@ var SidebarUI = { this.selectMenuItem(""); @@ -304,7 +340,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9ddb76aecd1d74ddee7910913d28d000 }, /** -@@ -641,25 +808,112 @@ var SidebarUI = { +@@ -641,25 +811,112 @@ var SidebarUI = { * none if the argument is an empty string. */ selectMenuItem(commandID) { From 7a01f36f4cf59bc5230becf0ff740ff6a0a90413 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 19 Nov 2022 15:11:53 +1100 Subject: [PATCH 06/24] =?UTF-8?q?=F0=9F=94=A7=20Add=20KeepTabsActive=20to?= =?UTF-8?q?=20Preference?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/browser/app/profile/pulse-browser.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/browser/app/profile/pulse-browser.js b/src/browser/app/profile/pulse-browser.js index 00b77e20..15ee0593 100644 --- a/src/browser/app/profile/pulse-browser.js +++ b/src/browser/app/profile/pulse-browser.js @@ -16,6 +16,8 @@ pref('pulse.welcome.seen', false); // Sidebar pref pref('pulse.sidebar.enabled', true); pref('pulse.sidebar.extensions.enabled', true); +pref('pulse.sidebar.keeptabsactive.enabled', true); + //PIP pref pref('media.videocontrols.picture-in-picture.audio-toggle.enabled', true); From 31ecd290f15b72df60ddbac1738408b66adebd07 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 19 Nov 2022 15:13:32 +1100 Subject: [PATCH 07/24] =?UTF-8?q?=F0=9F=A9=B9=20=20Persistence=20Fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/content/browser-sidebar-js.patch | 93 ++++++++++++------- 1 file changed, 58 insertions(+), 35 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index 69d4a10e..7a62474a 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e729ec7a05 100644 +index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd55452806 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -90,16 +90,16 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e7 }, + + get keepTabsActivePref() { -+ if (this._keepTabsActive) { ++ if (this._keepTabsActive != null) { + return this._keepTabsActive; + } + return (async () => { + try { -+ return await (this.keepTabsActivePref = Services.prefs.getBoolPref("pulse.sidebar.keeptabsactive.enabled")); ++ return await (this._keepTabsActive = Services.prefs.getBoolPref("pulse.sidebar.keeptabsactive.enabled")); + } catch(e) { -+ return 1; ++ return true; + } -+ })(); ++ })(); + }, _splitter: null, _icon: null, @@ -108,7 +108,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e7 _reversePositionButton: null, _switcherPanel: null, _switcherTarget: null, -@@ -110,15 +163,54 @@ var SidebarUI = { +@@ -110,15 +163,58 @@ var SidebarUI = { this._switcherTarget = document.getElementById("sidebar-switcher-target"); this._switcherArrow = document.getElementById("sidebar-switcher-arrow"); @@ -151,19 +151,35 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e7 Services.obs.addObserver(this, "intl:app-locales-changed"); this._initDeferred.resolve(); ++ ++ //check if element by id sidebar exists to bool var + -+ if (this.keepTabsActivePref){ -+ //if element by id sidebar exists destroy it -+ if (document.getElementById("sidebar")){ -+ document.getElementById("sidebar").remove(); -+ } ++ var sidebar = document.getElementById("sidebar"); ++ let sidebarExists = sidebar ? true : false; ++ if (this.keepTabsActivePref && sidebarExists) { ++ sidebar.remove(); ++ } ++ else if ( !this.keepTabsActivePref && !sidebarExists) { ++ this.createBrowser("sidebar"); + } + + this.loadedSidebars = []; }, uninit() { -@@ -159,17 +251,26 @@ var SidebarUI = { +@@ -127,7 +223,10 @@ var SidebarUI = { + let enumerator = Services.wm.getEnumerator("navigator:browser"); + if (!enumerator.hasMoreElements()) { + let xulStore = Services.xulStore; +- xulStore.persist(this._box, "sidebarcommand"); ++ ++ if(!this.keepTabsActivePref){ ++ xulStore.persist(this._box, "sidebarcommand"); ++ } + + if (this._box.hasAttribute("positionend")) { + xulStore.persist(this._box, "positionend"); +@@ -159,17 +258,26 @@ var SidebarUI = { /** * The handler for Services.obs.addObserver. **/ @@ -194,7 +210,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e7 } } }, -@@ -488,6 +589,10 @@ var SidebarUI = { +@@ -488,6 +596,10 @@ var SidebarUI = { }, _loadSidebarExtension(commandID) { @@ -205,7 +221,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e7 let sidebar = this.sidebars.get(commandID); let { extensionId } = sidebar; if (extensionId) { -@@ -526,6 +631,7 @@ var SidebarUI = { +@@ -526,6 +638,7 @@ var SidebarUI = { } this._fireFocusedEvent(); @@ -213,7 +229,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e7 return true; }); }, -@@ -549,6 +655,7 @@ var SidebarUI = { +@@ -549,10 +662,29 @@ var SidebarUI = { } return this._show(commandID).then(() => { this._loadSidebarExtension(commandID); @@ -221,25 +237,36 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e7 return true; }); }, -@@ -562,9 +669,46 @@ var SidebarUI = { + ++ ++ //Create sidebar browser between active and inactive for persistence reasons ++ createBrowser(id, commandID) { ++ let browser = document.createXULElement("browser"); ++ browser.setAttribute("id", id); ++ browser.setAttribute("autoscroll", "false"); ++ browser.setAttribute("disablehistory", "true"); ++ browser.setAttribute("disablefullscreen", "true"); ++ browser.setAttribute("tooltip", "aHTMLTooltip"); ++ browser.setAttribute("class", "sidebar-tab"); ++ if (commandID) { ++ browser.setAttribute("sidebarcommand", commandID); ++ } ++ browser.setAttribute("style", "min-width: 14em; width: 18em; max-width: 36em; -moz-box-flex: 1;"); ++ this._box.appendChild(browser); ++ this._browser = browser; ++ }, ++ + /** + * Implementation for show. Also used internally for sidebars that are shown + * when a window is opened and we don't want to ping telemetry. +@@ -562,6 +694,31 @@ var SidebarUI = { */ _show(commandID) { return new Promise(resolve => { + if (this.keepTabsActivePref){ + //try and find browser with id sidebar-browser- + if (!document.getElementById("sidebar-browser-" + commandID)){ -+ //create a new browser for the sidebar with id "sidebar-browser-" -+ let browser = document.createXULElement("browser"); -+ browser.setAttribute("id", "sidebar-browser-" + commandID); -+ browser.setAttribute("autoscroll", "false"); -+ browser.setAttribute("disablehistory", "true"); -+ browser.setAttribute("disablefullscreen", "true"); -+ browser.setAttribute("tooltip", "aHTMLTooltip"); -+ browser.setAttribute("class", "sidebar-tab"); -+ browser.setAttribute("sidebarcommand", commandID); -+ browser.setAttribute("style", "min-width: 14em; width: 18em; max-width: 36em; -moz-box-flex: 1;"); -+ this._box.appendChild(browser); -+ this._browser = browser; ++ this.createBrowser(("sidebar-browser-"+commandID),commandID); + } + else { + //browser already exists, get it @@ -264,11 +291,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e7 this.selectMenuItem(commandID); this._box.hidden = this._splitter.hidden = false; -+ //Set position reloads the page just as a note - this.setPosition(); - - this.hideSwitcherPanel(); -@@ -573,13 +717,16 @@ var SidebarUI = { +@@ -573,13 +730,16 @@ var SidebarUI = { this._box.setAttribute("sidebarcommand", commandID); this.lastOpenedId = commandID; @@ -287,7 +310,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e7 this.browser.addEventListener( "load", event => { -@@ -618,22 +765,45 @@ var SidebarUI = { +@@ -618,22 +778,45 @@ var SidebarUI = { this.selectMenuItem(""); @@ -340,7 +363,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..9dc758dec630add62d0503e163b341e7 }, /** -@@ -641,25 +811,112 @@ var SidebarUI = { +@@ -641,25 +824,112 @@ var SidebarUI = { * none if the argument is an empty string. */ selectMenuItem(commandID) { From bad2880180e95f2ea9f55600ec03c9faf9545f8c Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 19 Nov 2022 16:31:45 +1100 Subject: [PATCH 08/24] Restart Tooltip & Checkbox Fix --- .../components/preferences/main-inc-xhtml.patch | 11 +++++++++-- .../en-US/browser/preferences/preferences-ftl.patch | 12 +++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/browser/components/preferences/main-inc-xhtml.patch b/src/browser/components/preferences/main-inc-xhtml.patch index 683438b3..77d819d1 100644 --- a/src/browser/components/preferences/main-inc-xhtml.patch +++ b/src/browser/components/preferences/main-inc-xhtml.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml -index 3d4035690d38f4d851cc86749ebeec7b7ca9aaf2..e9136a52427d7f3ada87803373f16c20a25b066a 100644 +index 4cdcece2776506eb772a5463e245218837abc5e0..9b517ea6a3fc2ff43c7c412b90f241e75a65bdae 100644 --- a/browser/components/preferences/main.inc.xhtml +++ b/browser/components/preferences/main.inc.xhtml -@@ -125,6 +125,15 @@ +@@ -125,6 +125,22 @@ @@ -13,6 +13,13 @@ index 3d4035690d38f4d851cc86749ebeec7b7ca9aaf2..e9136a52427d7f3ada87803373f16c20 + ++ ++ ++ ++ + + diff --git a/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch b/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch index 9e3b6d16..9db68432 100644 --- a/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch +++ b/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch @@ -1,8 +1,8 @@ diff --git a/browser/locales/en-US/browser/preferences/preferences.ftl b/browser/locales/en-US/browser/preferences/preferences.ftl -index e51ab66d5bdbda020e11f715080e2d716b6385ef..5530d7b452c72900a093b02133714daf413c30b4 100644 +index e51ab66d5bdbda020e11f715080e2d716b6385ef..3c6be2ce7a787de0344f0bfe2b756d2d48396f27 100644 --- a/browser/locales/en-US/browser/preferences/preferences.ftl +++ b/browser/locales/en-US/browser/preferences/preferences.ftl -@@ -1424,3 +1424,15 @@ httpsonly-radio-disabled = +@@ -1424,3 +1424,13 @@ httpsonly-radio-disabled = desktop-folder-name = Desktop downloads-folder-name = Downloads choose-download-folder-title = Choose Download Folder: @@ -11,10 +11,8 @@ index e51ab66d5bdbda020e11f715080e2d716b6385ef..5530d7b452c72900a093b02133714daf +preferences-sidebar-header = Sidebar +preferences-sidebar-visible = + .label = Show sidebar tabs -+ +preferences-sidebar-extensions-visible = + .label = Show available extensions on the sidebar -+ -+preferences-sidebar-active-tabs = Keep sidebar tabs active even when closed -+preferences-sidebar-active-tabs-tooltip = When enabled, sidebar tabs will remain active even when closed. When disabled, sidebar tabs will be closed when you click on another tab. -+ ++preferences-sidebar-active-tabs = ++ .label = Keep sidebar tabs active even when closed ++preferences-sidebar-active-tabs-tooltip = When enabled, sidebar tabs will remain active even when closed. When disabled, sidebar tabs will be closed when you click on another tab. Restart { -brand-short-name } From 440b342068a66f2f83c3ab62ef6cedd38510a85e Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 19 Nov 2022 16:32:43 +1100 Subject: [PATCH 09/24] Update main.js --- src/browser/components/preferences/main-js.patch | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/browser/components/preferences/main-js.patch b/src/browser/components/preferences/main-js.patch index da3f0268..149c6b22 100644 --- a/src/browser/components/preferences/main-js.patch +++ b/src/browser/components/preferences/main-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js -index ceee50df3743724f1d59cebb0fec244639e65405..8e065ec0aec2ec86ad2d51ccd828afd36cd0e212 100644 +index 0dc01225f51934fd86653748c1182960b5ba4e70..3f24c789c550021cd9be90691aac167686f550da 100644 --- a/browser/components/preferences/main.js +++ b/browser/components/preferences/main.js -@@ -154,6 +154,11 @@ Preferences.addAll([ +@@ -161,6 +161,12 @@ Preferences.addAll([ // Media { id: "media.hardwaremediakeys.enabled", type: "bool" }, @@ -10,7 +10,8 @@ index ceee50df3743724f1d59cebb0fec244639e65405..8e065ec0aec2ec86ad2d51ccd828afd3 + + // Pulse browser: custom settings + { id: 'pulse.sidebar.enabled', type: 'bool' }, -+ { id: 'pulse.sidebar.extensions.enabled', type: 'bool' } ++ { id: 'pulse.sidebar.extensions.enabled', type: 'bool' }, ++ { id: 'pulse.sidebar.keeptabsactive.enabled', type: 'bool' } ]); if (AppConstants.HAVE_SHELL_SERVICE) { From 2e685dfdf4f4447d26a833dd6e5f3a5894745b9d Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 19 Nov 2022 16:41:58 +1100 Subject: [PATCH 10/24] =?UTF-8?q?=F0=9F=94=A5=20Wrong=20Files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/browser/components/preferences/home-inc-xhtml.patch | 0 src/browser/components/preferences/home-js.patch | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/browser/components/preferences/home-inc-xhtml.patch delete mode 100644 src/browser/components/preferences/home-js.patch diff --git a/src/browser/components/preferences/home-inc-xhtml.patch b/src/browser/components/preferences/home-inc-xhtml.patch deleted file mode 100644 index e69de29b..00000000 diff --git a/src/browser/components/preferences/home-js.patch b/src/browser/components/preferences/home-js.patch deleted file mode 100644 index e69de29b..00000000 From 716d227c101692ee97b0cea36a522b853a3fc2d9 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 19 Nov 2022 18:52:43 +1100 Subject: [PATCH 11/24] =?UTF-8?q?=F0=9F=92=AC=20QA=20Update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/PULL_REQUEST_TEMPLATE/ff_update.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/ff_update.md b/.github/PULL_REQUEST_TEMPLATE/ff_update.md index fde800b1..08a290cc 100644 --- a/.github/PULL_REQUEST_TEMPLATE/ff_update.md +++ b/.github/PULL_REQUEST_TEMPLATE/ff_update.md @@ -14,7 +14,8 @@ This bumps Firefox up to `{NEW_VERSION}` for security and performance reasons. R - [ ] Sidebar-Tabs is Loaded and has a button visible down the bottom - [ ] Sidebar-Tabs can add a sidebar item to the sidebar - [ ] Sidebar-Tabs can remove a sidebar item to the sidebar - + - [ ] The sidebar keeps tabs active while closed when the preference `pulse.sidebar.keeptabsactive.enabled` is set to true + - [ ] The sidebar overwrites tabs when the preference `pulse.sidebar.keeptabsactive.enabled` is set to false - [ ] Extensions @@ -38,6 +39,7 @@ This bumps Firefox up to `{NEW_VERSION}` for security and performance reasons. R - [ ] All tabs in preferences open - [ ] The "More from {Vendor}" option is not present - [ ] The sidebar preferences are present and work as expected + - [ ] The sidebar keep tabs active preference is present and works as expected - [ ] Welcome experience From 8ad222f2589e0f13f081a78c1c657cbffb426358 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 19 Nov 2022 18:55:47 +1100 Subject: [PATCH 12/24] =?UTF-8?q?=F0=9F=92=AC=20=E2=9A=B0=EF=B8=8F=20Remov?= =?UTF-8?q?e=20Unneeded=20QA=20Check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/PULL_REQUEST_TEMPLATE/ff_update.md | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/ff_update.md b/.github/PULL_REQUEST_TEMPLATE/ff_update.md index 08a290cc..5bc76fc1 100644 --- a/.github/PULL_REQUEST_TEMPLATE/ff_update.md +++ b/.github/PULL_REQUEST_TEMPLATE/ff_update.md @@ -39,7 +39,6 @@ This bumps Firefox up to `{NEW_VERSION}` for security and performance reasons. R - [ ] All tabs in preferences open - [ ] The "More from {Vendor}" option is not present - [ ] The sidebar preferences are present and work as expected - - [ ] The sidebar keep tabs active preference is present and works as expected - [ ] Welcome experience From b11de11792aa2fa2d7a5e6b2a3a87e69ede2179b Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 19 Nov 2022 19:55:35 +1100 Subject: [PATCH 13/24] Fix Promise --- .../base/content/browser-sidebar-js.patch | 37 ++++++++----------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index 7a62474a..a4c79146 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd55452806 100644 +index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4f77ac45a4f7e551c527457551dade0f1662c3a7 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -84,7 +84,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd DEFAULT_SIDEBAR_ID: "viewBookmarksSidebar", // lastOpenedId is set in show() but unlike currentID it's not cleared out on hide -@@ -76,8 +114,23 @@ var SidebarUI = { +@@ -76,8 +114,18 @@ var SidebarUI = { } return (this.__title = document.getElementById("sidebar-title")); }, @@ -93,14 +93,9 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd + if (this._keepTabsActive != null) { + return this._keepTabsActive; + } -+ return (async () => { -+ try { -+ return await (this._keepTabsActive = Services.prefs.getBoolPref("pulse.sidebar.keeptabsactive.enabled")); -+ } catch(e) { -+ return true; -+ } -+ })(); ++ return this._keepTabsActive = Services.prefs.getBoolPref("pulse.sidebar.keeptabsactive.enabled", true); + }, ++ _splitter: null, _icon: null, + _sidebarIcons: null, @@ -108,7 +103,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd _reversePositionButton: null, _switcherPanel: null, _switcherTarget: null, -@@ -110,15 +163,58 @@ var SidebarUI = { +@@ -110,15 +158,58 @@ var SidebarUI = { this._switcherTarget = document.getElementById("sidebar-switcher-target"); this._switcherArrow = document.getElementById("sidebar-switcher-arrow"); @@ -159,7 +154,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd + if (this.keepTabsActivePref && sidebarExists) { + sidebar.remove(); + } -+ else if ( !this.keepTabsActivePref && !sidebarExists) { ++ else if (this.keepTabsActivePref && !sidebarExists) { + this.createBrowser("sidebar"); + } + @@ -167,7 +162,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd }, uninit() { -@@ -127,7 +223,10 @@ var SidebarUI = { +@@ -127,7 +218,10 @@ var SidebarUI = { let enumerator = Services.wm.getEnumerator("navigator:browser"); if (!enumerator.hasMoreElements()) { let xulStore = Services.xulStore; @@ -179,7 +174,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd if (this._box.hasAttribute("positionend")) { xulStore.persist(this._box, "positionend"); -@@ -159,17 +258,26 @@ var SidebarUI = { +@@ -159,17 +253,26 @@ var SidebarUI = { /** * The handler for Services.obs.addObserver. **/ @@ -210,7 +205,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd } } }, -@@ -488,6 +596,10 @@ var SidebarUI = { +@@ -485,6 +588,10 @@ var SidebarUI = { }, _loadSidebarExtension(commandID) { @@ -221,7 +216,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd let sidebar = this.sidebars.get(commandID); let { extensionId } = sidebar; if (extensionId) { -@@ -526,6 +638,7 @@ var SidebarUI = { +@@ -523,6 +630,7 @@ var SidebarUI = { } this._fireFocusedEvent(); @@ -229,7 +224,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd return true; }); }, -@@ -549,10 +662,29 @@ var SidebarUI = { +@@ -546,10 +654,29 @@ var SidebarUI = { } return this._show(commandID).then(() => { this._loadSidebarExtension(commandID); @@ -251,7 +246,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd + if (commandID) { + browser.setAttribute("sidebarcommand", commandID); + } -+ browser.setAttribute("style", "min-width: 14em; width: 18em; max-width: 36em; -moz-box-flex: 1;"); ++ browser.setAttribute("style", "min-width: 14em; -moz-box-flex: 1;"); + this._box.appendChild(browser); + this._browser = browser; + }, @@ -259,7 +254,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd /** * Implementation for show. Also used internally for sidebars that are shown * when a window is opened and we don't want to ping telemetry. -@@ -562,6 +694,31 @@ var SidebarUI = { +@@ -559,6 +686,31 @@ var SidebarUI = { */ _show(commandID) { return new Promise(resolve => { @@ -291,7 +286,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd this.selectMenuItem(commandID); this._box.hidden = this._splitter.hidden = false; -@@ -573,13 +730,16 @@ var SidebarUI = { +@@ -570,13 +722,16 @@ var SidebarUI = { this._box.setAttribute("sidebarcommand", commandID); this.lastOpenedId = commandID; @@ -310,7 +305,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd this.browser.addEventListener( "load", event => { -@@ -618,22 +778,45 @@ var SidebarUI = { +@@ -615,22 +770,45 @@ var SidebarUI = { this.selectMenuItem(""); @@ -363,7 +358,7 @@ index f09e37fc42f7754f7f3687884ead25124c1b2076..4f2eaef44b9f370ef6efb07784bb9edd }, /** -@@ -641,25 +824,112 @@ var SidebarUI = { +@@ -638,25 +816,112 @@ var SidebarUI = { * none if the argument is an empty string. */ selectMenuItem(commandID) { From 5ec8263e3dc61d3d1497606f3bf465cabe66c8a7 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Wed, 23 Nov 2022 15:01:09 +1100 Subject: [PATCH 14/24] Fix Load for Preference Disabled --- .../base/content/browser-sidebar-js.patch | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index a4c79146..687d14a1 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4f77ac45a4f7e551c527457551dade0f1662c3a7 100644 +index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af0247ed4c2d4 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -205,18 +205,19 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4f77ac45a4f7e551c527457551dade0f } } }, -@@ -485,6 +588,10 @@ var SidebarUI = { +@@ -485,6 +588,11 @@ var SidebarUI = { }, _loadSidebarExtension(commandID) { + if (this.keepTabsActivePref && this.loadedSidebars.includes(commandID)) { ++ console.log("returned"); + return; + } -+ ++ console.log("it went on"); let sidebar = this.sidebars.get(commandID); let { extensionId } = sidebar; if (extensionId) { -@@ -523,6 +630,7 @@ var SidebarUI = { +@@ -523,6 +631,7 @@ var SidebarUI = { } this._fireFocusedEvent(); @@ -224,7 +225,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4f77ac45a4f7e551c527457551dade0f return true; }); }, -@@ -546,10 +654,29 @@ var SidebarUI = { +@@ -546,10 +655,29 @@ var SidebarUI = { } return this._show(commandID).then(() => { this._loadSidebarExtension(commandID); @@ -254,7 +255,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4f77ac45a4f7e551c527457551dade0f /** * Implementation for show. Also used internally for sidebars that are shown * when a window is opened and we don't want to ping telemetry. -@@ -559,6 +686,31 @@ var SidebarUI = { +@@ -559,6 +687,31 @@ var SidebarUI = { */ _show(commandID) { return new Promise(resolve => { @@ -286,7 +287,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4f77ac45a4f7e551c527457551dade0f this.selectMenuItem(commandID); this._box.hidden = this._splitter.hidden = false; -@@ -570,13 +722,16 @@ var SidebarUI = { +@@ -570,13 +723,16 @@ var SidebarUI = { this._box.setAttribute("sidebarcommand", commandID); this.lastOpenedId = commandID; @@ -301,11 +302,11 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4f77ac45a4f7e551c527457551dade0f this.browser.setAttribute("src", url); // kick off async load - - if (this.browser.contentDocument.location.href != url) { -+ if (!this.loadedSidebars.includes(commandID)) { ++ if (!this.loadedSidebars.includes(commandID) && this.keepTabsActivePref || this.browser.contentDocument.location.href != url && !this.keepTabsActivePref) { this.browser.addEventListener( "load", event => { -@@ -615,22 +770,45 @@ var SidebarUI = { +@@ -615,22 +771,45 @@ var SidebarUI = { this.selectMenuItem(""); @@ -358,7 +359,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4f77ac45a4f7e551c527457551dade0f }, /** -@@ -638,25 +816,112 @@ var SidebarUI = { +@@ -638,25 +817,112 @@ var SidebarUI = { * none if the argument is an empty string. */ selectMenuItem(commandID) { From 3e8797c53e8196ad611b981ca66770338b484fb2 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Wed, 23 Nov 2022 18:36:38 +1100 Subject: [PATCH 15/24] =?UTF-8?q?=E2=9C=A8=20Add=20Sidebar=20Options=20to?= =?UTF-8?q?=20Welcome?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/browser/components/welcome/welcome.css | 5 ++++ src/browser/components/welcome/welcome.html | 14 ++++++++++ src/browser/components/welcome/welcome.js | 27 +++++++++++++++++++ src/browser/locales/en-US/browser/welcome.ftl | 8 +++++- 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/browser/components/welcome/welcome.css b/src/browser/components/welcome/welcome.css index cb33f29c..79af1ce5 100644 --- a/src/browser/components/welcome/welcome.css +++ b/src/browser/components/welcome/welcome.css @@ -84,3 +84,8 @@ p { display: none; } } + +input[type="checkbox"] { + display: inline-block; + vertical-align: middle; +} \ No newline at end of file diff --git a/src/browser/components/welcome/welcome.html b/src/browser/components/welcome/welcome.html index f7961701..d695cfce 100644 --- a/src/browser/components/welcome/welcome.html +++ b/src/browser/components/welcome/welcome.html @@ -88,6 +88,20 @@

> + + diff --git a/src/browser/components/welcome/welcome.js b/src/browser/components/welcome/welcome.js index 215f697e..5864755f 100644 --- a/src/browser/components/welcome/welcome.js +++ b/src/browser/components/welcome/welcome.js @@ -151,6 +151,32 @@ class Themes extends Page { } } +class Sidebar extends Page { + constructor(id) { + super(id) + + this.loadSidebar() + } + + async loadSidebar() { + this.enabled = document.getElementById('sidebarEnabled') + this.keepTabsActive = document.getElementById('sidebarKeepTabsActive') + + this.enabled.addEventListener('change', () => { + //change browser preference pulse.sidebar.enabled + Services.prefs.setBoolPref('pulse.sidebar.enabled', this.enabled.checked) + }) + + this.keepTabsActive.addEventListener('change', () => { + //change browser preference pulse.sidebar.keeptabsactive.enabled + Services.prefs.setBoolPref( + 'pulse.sidebar.keeptabsactive.enabled', + this.keepTabsActive.checked + ) + }) + } +} + class Search extends Page { constructor(id) { super(id) @@ -266,4 +292,5 @@ const pages = new Pages([ new Import('import'), new Themes('theme'), new Search('search'), + new Sidebar('sidebar'), ]) diff --git a/src/browser/locales/en-US/browser/welcome.ftl b/src/browser/locales/en-US/browser/welcome.ftl index 3e156cd9..49c571af 100644 --- a/src/browser/locales/en-US/browser/welcome.ftl +++ b/src/browser/locales/en-US/browser/welcome.ftl @@ -16,7 +16,13 @@ welcome-dialog-theme = Choose a theme welcome-dialog-theme-action = Continue welcome-dialog-search = Chose a search engine -welcome-dialog-search-action = Done +welcome-dialog-search-action = Next + +welcome-dialog-sidebar = Choose your Sidebar Settigns +welcome-dialog-sidebar-subtext = Some users like to have a sidebar, others don't. It's all up to you. +welcome-dialog-sidebar-checkbox = Enable Sidebar +welcome-dialog-sidebar-keeptabsenabled-checkbox = Keep sidebar tabs active even when closed +welcome-dialog-sidebar-action = Done # About Welcome Page welcome-page-description = An experimental Firefox fork that enhances focus and increases work productivity due to its hyper minimalistic UI and built-in tools From 1566930857a3d3345923504e16491dcd6a9e6f8b Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Wed, 23 Nov 2022 18:42:06 +1100 Subject: [PATCH 16/24] =?UTF-8?q?Revert=20"=E2=9C=A8=20Add=20Sidebar=20Opt?= =?UTF-8?q?ions=20to=20Welcome"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 3e8797c53e8196ad611b981ca66770338b484fb2. --- src/browser/components/welcome/welcome.css | 5 ---- src/browser/components/welcome/welcome.html | 14 ---------- src/browser/components/welcome/welcome.js | 27 ------------------- src/browser/locales/en-US/browser/welcome.ftl | 8 +----- 4 files changed, 1 insertion(+), 53 deletions(-) diff --git a/src/browser/components/welcome/welcome.css b/src/browser/components/welcome/welcome.css index 79af1ce5..cb33f29c 100644 --- a/src/browser/components/welcome/welcome.css +++ b/src/browser/components/welcome/welcome.css @@ -84,8 +84,3 @@ p { display: none; } } - -input[type="checkbox"] { - display: inline-block; - vertical-align: middle; -} \ No newline at end of file diff --git a/src/browser/components/welcome/welcome.html b/src/browser/components/welcome/welcome.html index d695cfce..f7961701 100644 --- a/src/browser/components/welcome/welcome.html +++ b/src/browser/components/welcome/welcome.html @@ -88,20 +88,6 @@

> - - diff --git a/src/browser/components/welcome/welcome.js b/src/browser/components/welcome/welcome.js index 5864755f..215f697e 100644 --- a/src/browser/components/welcome/welcome.js +++ b/src/browser/components/welcome/welcome.js @@ -151,32 +151,6 @@ class Themes extends Page { } } -class Sidebar extends Page { - constructor(id) { - super(id) - - this.loadSidebar() - } - - async loadSidebar() { - this.enabled = document.getElementById('sidebarEnabled') - this.keepTabsActive = document.getElementById('sidebarKeepTabsActive') - - this.enabled.addEventListener('change', () => { - //change browser preference pulse.sidebar.enabled - Services.prefs.setBoolPref('pulse.sidebar.enabled', this.enabled.checked) - }) - - this.keepTabsActive.addEventListener('change', () => { - //change browser preference pulse.sidebar.keeptabsactive.enabled - Services.prefs.setBoolPref( - 'pulse.sidebar.keeptabsactive.enabled', - this.keepTabsActive.checked - ) - }) - } -} - class Search extends Page { constructor(id) { super(id) @@ -292,5 +266,4 @@ const pages = new Pages([ new Import('import'), new Themes('theme'), new Search('search'), - new Sidebar('sidebar'), ]) diff --git a/src/browser/locales/en-US/browser/welcome.ftl b/src/browser/locales/en-US/browser/welcome.ftl index 49c571af..3e156cd9 100644 --- a/src/browser/locales/en-US/browser/welcome.ftl +++ b/src/browser/locales/en-US/browser/welcome.ftl @@ -16,13 +16,7 @@ welcome-dialog-theme = Choose a theme welcome-dialog-theme-action = Continue welcome-dialog-search = Chose a search engine -welcome-dialog-search-action = Next - -welcome-dialog-sidebar = Choose your Sidebar Settigns -welcome-dialog-sidebar-subtext = Some users like to have a sidebar, others don't. It's all up to you. -welcome-dialog-sidebar-checkbox = Enable Sidebar -welcome-dialog-sidebar-keeptabsenabled-checkbox = Keep sidebar tabs active even when closed -welcome-dialog-sidebar-action = Done +welcome-dialog-search-action = Done # About Welcome Page welcome-page-description = An experimental Firefox fork that enhances focus and increases work productivity due to its hyper minimalistic UI and built-in tools From 3b6230ba67d97c3bbc0974aea945bac9666f308d Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 24 Dec 2022 17:50:16 +1100 Subject: [PATCH 17/24] Observer --- .../base/content/browser-sidebar-js.patch | 60 ++++++++++--------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index 687d14a1..993af63d 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af0247ed4c2d4 100644 +index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c837599d8d336b0a0e11780721acefe4b02c90e0 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -75,26 +75,21 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 ])); }, -@@ -61,6 +97,8 @@ var SidebarUI = { +@@ -61,7 +97,10 @@ var SidebarUI = { return (this._browser = document.getElementById("sidebar")); }, POSITION_START_PREF: "sidebar.position_start", + SIDEBAR_TABS_PREF: "pulse.sidebar.enabled", + SIDEBAR_EXTENSIONS_PREF: "pulse.sidebar.extensions.enabled", DEFAULT_SIDEBAR_ID: "viewBookmarksSidebar", ++ SIDEBAR_KEEP_TABS_ACTIVE_PREF: "pulse.sidebar.keeptabsactive.enabled", // lastOpenedId is set in show() but unlike currentID it's not cleared out on hide -@@ -76,8 +114,18 @@ var SidebarUI = { + // and isn't persisted across windows +@@ -76,8 +115,11 @@ var SidebarUI = { } return (this.__title = document.getElementById("sidebar-title")); }, -+ -+ get keepTabsActivePref() { -+ if (this._keepTabsActive != null) { -+ return this._keepTabsActive; -+ } -+ return this._keepTabsActive = Services.prefs.getBoolPref("pulse.sidebar.keeptabsactive.enabled", true); -+ }, + _splitter: null, _icon: null, @@ -103,7 +98,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 _reversePositionButton: null, _switcherPanel: null, _switcherTarget: null, -@@ -110,15 +158,58 @@ var SidebarUI = { +@@ -110,15 +152,65 @@ var SidebarUI = { this._switcherTarget = document.getElementById("sidebar-switcher-target"); this._switcherArrow = document.getElementById("sidebar-switcher-arrow"); @@ -120,6 +115,11 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 + false + ); + ++ this._keepTabsActivePref = Services.prefs.getBoolPref( ++ this.SIDEBAR_KEEP_TABS_ACTIVE_PREF, ++ false ++ ); ++ + for (const sidebaritem of sidebaritems) { + if (this.sidebars.get(sidebaritem).extensionId && !sidebarExtensionVis) { + return; @@ -140,6 +140,8 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 + + // Keep track on the changes of the sidebar visibility + Services.prefs.addObserver(this.SIDEBAR_TABS_PREF, this); ++ ++ Services.prefs.addObserver(this.SIDEBAR_KEEP_TABS_ACTIVE_PREF, this); + this._inited = true; @@ -151,10 +153,10 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 + + var sidebar = document.getElementById("sidebar"); + let sidebarExists = sidebar ? true : false; -+ if (this.keepTabsActivePref && sidebarExists) { ++ if (this._keepTabsActivePref && sidebarExists) { + sidebar.remove(); + } -+ else if (this.keepTabsActivePref && !sidebarExists) { ++ else if (this._keepTabsActivePref && !sidebarExists) { + this.createBrowser("sidebar"); + } + @@ -162,19 +164,19 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 }, uninit() { -@@ -127,7 +218,10 @@ var SidebarUI = { +@@ -127,7 +219,10 @@ var SidebarUI = { let enumerator = Services.wm.getEnumerator("navigator:browser"); if (!enumerator.hasMoreElements()) { let xulStore = Services.xulStore; - xulStore.persist(this._box, "sidebarcommand"); + -+ if(!this.keepTabsActivePref){ ++ if(!this._keepTabsActivePref){ + xulStore.persist(this._box, "sidebarcommand"); + } if (this._box.hasAttribute("positionend")) { xulStore.persist(this._box, "positionend"); -@@ -159,17 +253,26 @@ var SidebarUI = { +@@ -159,17 +254,30 @@ var SidebarUI = { /** * The handler for Services.obs.addObserver. **/ @@ -200,16 +202,20 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 + Services.prefs.getBoolPref(this.SIDEBAR_TABS_PREF, true) + ); + break; ++ ++ case this.SIDEBAR_KEEP_TABS_ACTIVE_PREF: ++ this.init(); ++ break; + } + break; } } }, -@@ -485,6 +588,11 @@ var SidebarUI = { +@@ -485,6 +593,11 @@ var SidebarUI = { }, _loadSidebarExtension(commandID) { -+ if (this.keepTabsActivePref && this.loadedSidebars.includes(commandID)) { ++ if (this._keepTabsActivePref && this.loadedSidebars.includes(commandID)) { + console.log("returned"); + return; + } @@ -217,7 +223,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 let sidebar = this.sidebars.get(commandID); let { extensionId } = sidebar; if (extensionId) { -@@ -523,6 +631,7 @@ var SidebarUI = { +@@ -523,6 +636,7 @@ var SidebarUI = { } this._fireFocusedEvent(); @@ -225,7 +231,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 return true; }); }, -@@ -546,10 +655,29 @@ var SidebarUI = { +@@ -546,10 +660,29 @@ var SidebarUI = { } return this._show(commandID).then(() => { this._loadSidebarExtension(commandID); @@ -255,11 +261,11 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 /** * Implementation for show. Also used internally for sidebars that are shown * when a window is opened and we don't want to ping telemetry. -@@ -559,6 +687,31 @@ var SidebarUI = { +@@ -559,6 +692,31 @@ var SidebarUI = { */ _show(commandID) { return new Promise(resolve => { -+ if (this.keepTabsActivePref){ ++ if (this._keepTabsActivePref){ + //try and find browser with id sidebar-browser- + if (!document.getElementById("sidebar-browser-" + commandID)){ + this.createBrowser(("sidebar-browser-"+commandID),commandID); @@ -287,7 +293,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 this.selectMenuItem(commandID); this._box.hidden = this._splitter.hidden = false; -@@ -570,13 +723,16 @@ var SidebarUI = { +@@ -570,13 +728,16 @@ var SidebarUI = { this._box.setAttribute("sidebarcommand", commandID); this.lastOpenedId = commandID; @@ -302,11 +308,11 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 this.browser.setAttribute("src", url); // kick off async load - - if (this.browser.contentDocument.location.href != url) { -+ if (!this.loadedSidebars.includes(commandID) && this.keepTabsActivePref || this.browser.contentDocument.location.href != url && !this.keepTabsActivePref) { ++ if (!this.loadedSidebars.includes(commandID) && this._keepTabsActivePref || this.browser.contentDocument.location.href != url && !this._keepTabsActivePref) { this.browser.addEventListener( "load", event => { -@@ -615,22 +771,45 @@ var SidebarUI = { +@@ -615,22 +776,45 @@ var SidebarUI = { this.selectMenuItem(""); @@ -338,7 +344,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 - this.browser.setAttribute("src", "about:blank"); - this.browser.docShell.createAboutBlankContentViewer(null, null); + -+ if (!this.keepTabsActivePref){ ++ if (!this._keepTabsActivePref){ + this.browser.setAttribute("src", "about:blank"); + this.browser.docShell.createAboutBlankContentViewer(null, null); + } @@ -359,7 +365,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a9e0a4a559452a195b55a1c9576af024 }, /** -@@ -638,25 +817,112 @@ var SidebarUI = { +@@ -638,25 +822,112 @@ var SidebarUI = { * none if the argument is an empty string. */ selectMenuItem(commandID) { From 6b27c1259731665965bd5d0adcd0d86a53d4fee6 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 24 Dec 2022 17:52:24 +1100 Subject: [PATCH 18/24] =?UTF-8?q?=F0=9F=94=87=20this.Browser=20&=20Remove?= =?UTF-8?q?=20Logs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/content/browser-sidebar-js.patch | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index 993af63d..7d63f002 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c837599d8d336b0a0e11780721acefe4b02c90e0 100644 +index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a3672b5b513b53f423b6bd3532e1347f6659a0cf 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -151,7 +151,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c837599d8d336b0a0e11780721acefe4 + + //check if element by id sidebar exists to bool var + -+ var sidebar = document.getElementById("sidebar"); ++ var sidebar = this.browser; + let sidebarExists = sidebar ? true : false; + if (this._keepTabsActivePref && sidebarExists) { + sidebar.remove(); @@ -211,19 +211,17 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c837599d8d336b0a0e11780721acefe4 } } }, -@@ -485,6 +593,11 @@ var SidebarUI = { +@@ -485,6 +593,9 @@ var SidebarUI = { }, _loadSidebarExtension(commandID) { + if (this._keepTabsActivePref && this.loadedSidebars.includes(commandID)) { -+ console.log("returned"); + return; + } -+ console.log("it went on"); let sidebar = this.sidebars.get(commandID); let { extensionId } = sidebar; if (extensionId) { -@@ -523,6 +636,7 @@ var SidebarUI = { +@@ -523,6 +634,7 @@ var SidebarUI = { } this._fireFocusedEvent(); @@ -231,7 +229,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c837599d8d336b0a0e11780721acefe4 return true; }); }, -@@ -546,10 +660,29 @@ var SidebarUI = { +@@ -546,10 +658,29 @@ var SidebarUI = { } return this._show(commandID).then(() => { this._loadSidebarExtension(commandID); @@ -261,7 +259,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c837599d8d336b0a0e11780721acefe4 /** * Implementation for show. Also used internally for sidebars that are shown * when a window is opened and we don't want to ping telemetry. -@@ -559,6 +692,31 @@ var SidebarUI = { +@@ -559,6 +690,31 @@ var SidebarUI = { */ _show(commandID) { return new Promise(resolve => { @@ -293,7 +291,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c837599d8d336b0a0e11780721acefe4 this.selectMenuItem(commandID); this._box.hidden = this._splitter.hidden = false; -@@ -570,13 +728,16 @@ var SidebarUI = { +@@ -570,13 +726,16 @@ var SidebarUI = { this._box.setAttribute("sidebarcommand", commandID); this.lastOpenedId = commandID; @@ -312,7 +310,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c837599d8d336b0a0e11780721acefe4 this.browser.addEventListener( "load", event => { -@@ -615,22 +776,45 @@ var SidebarUI = { +@@ -615,22 +774,45 @@ var SidebarUI = { this.selectMenuItem(""); @@ -365,7 +363,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c837599d8d336b0a0e11780721acefe4 }, /** -@@ -638,25 +822,112 @@ var SidebarUI = { +@@ -638,25 +820,112 @@ var SidebarUI = { * none if the argument is an empty string. */ selectMenuItem(commandID) { From dfb37d45b480d89da96ec3f1dbe70daba153f1ec Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 24 Dec 2022 17:54:46 +1100 Subject: [PATCH 19/24] =?UTF-8?q?=F0=9F=92=A1=20Update=20comment=20with=20?= =?UTF-8?q?relevant=20info?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/browser/base/content/browser-sidebar-js.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index 7d63f002..283d9e74 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a3672b5b513b53f423b6bd3532e1347f6659a0cf 100644 +index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f7445f87f 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -148,9 +148,9 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..a3672b5b513b53f423b6bd3532e1347f Services.obs.addObserver(this, "intl:app-locales-changed"); this._initDeferred.resolve(); -+ -+ //check if element by id sidebar exists to bool var + ++ ++ //Check the pre-existance of sidebar and if it is not there, create it + var sidebar = this.browser; + let sidebarExists = sidebar ? true : false; + if (this._keepTabsActivePref && sidebarExists) { From ac00ffc998f0d01b8fd6e3c1e61167301706f231 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sat, 24 Dec 2022 18:03:10 +1100 Subject: [PATCH 20/24] =?UTF-8?q?=F0=9F=8C=90=20Change=20Lang=20Tags=20and?= =?UTF-8?q?=20Remove=20Restart=20Button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/browser/components/preferences/main-inc-xhtml.patch | 8 ++++---- .../en-US/browser/preferences/preferences-ftl.patch | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/browser/components/preferences/main-inc-xhtml.patch b/src/browser/components/preferences/main-inc-xhtml.patch index 77d819d1..d72a0a08 100644 --- a/src/browser/components/preferences/main-inc-xhtml.patch +++ b/src/browser/components/preferences/main-inc-xhtml.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml -index 4cdcece2776506eb772a5463e245218837abc5e0..9b517ea6a3fc2ff43c7c412b90f241e75a65bdae 100644 +index fdf515554d67c5082b0d9c73b72533e06a085030..2d8130d90a6ff43af287debca7c44cc13d4da3f6 100644 --- a/browser/components/preferences/main.inc.xhtml +++ b/browser/components/preferences/main.inc.xhtml -@@ -125,6 +125,22 @@ +@@ -122,6 +122,22 @@ @@ -16,8 +16,8 @@ index 4cdcece2776506eb772a5463e245218837abc5e0..9b517ea6a3fc2ff43c7c412b90f241e7 + -+ ++ + + + diff --git a/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch b/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch index 9db68432..29137fdc 100644 --- a/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch +++ b/src/browser/locales/en-US/browser/preferences/preferences-ftl.patch @@ -1,5 +1,5 @@ diff --git a/browser/locales/en-US/browser/preferences/preferences.ftl b/browser/locales/en-US/browser/preferences/preferences.ftl -index e51ab66d5bdbda020e11f715080e2d716b6385ef..3c6be2ce7a787de0344f0bfe2b756d2d48396f27 100644 +index d7b87eacb425cb277e226261c7d994e084100a5d..83ac92d7eea79e0a6ae208c2e6a699075222e574 100644 --- a/browser/locales/en-US/browser/preferences/preferences.ftl +++ b/browser/locales/en-US/browser/preferences/preferences.ftl @@ -1424,3 +1424,13 @@ httpsonly-radio-disabled = @@ -15,4 +15,4 @@ index e51ab66d5bdbda020e11f715080e2d716b6385ef..3c6be2ce7a787de0344f0bfe2b756d2d + .label = Show available extensions on the sidebar +preferences-sidebar-active-tabs = + .label = Keep sidebar tabs active even when closed -+preferences-sidebar-active-tabs-tooltip = When enabled, sidebar tabs will remain active even when closed. When disabled, sidebar tabs will be closed when you click on another tab. Restart { -brand-short-name } ++preferences-sidebar-active-tabs-description = When enabled, sidebar tabs will remain active even when closed. When disabled, sidebar tabs will be closed when you click on another tab. From 5c38a9bfcb675cbc3ded5543bd6ca4ce9bcdddf5 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sun, 1 Jan 2023 16:17:11 +1100 Subject: [PATCH 21/24] Sidebar Seperator Fix --- .../base/content/browser-sidebar-js.patch | 66 +++++++++++++------ 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index 283d9e74..8e8e7cdc 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f7445f87f 100644 +index c5ac301416d2d820ba95e21c0ce1fe305e63b554..93e3e974d40e32ed27e237a02c0bc643b201f43f 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -42,8 +42,8 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f url: "chrome://browser/content/syncedtabs/sidebar.xhtml", menuId: "menu_tabsSidebar", + iconurl: "chrome://browser/skin/tab.svg", -+ }), -+ ], + }), + ], + [ + "viewDownloadsSidebar", + makeSidebar({ @@ -52,8 +52,8 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f + url: "about:downloads", + menuId: "menu_downloadsSidebar", + iconurl: "chrome://browser/skin/downloads/downloads.svg" - }), - ], ++ }), ++ ], + [ + "sidebar-view-addons", + { @@ -98,7 +98,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f _reversePositionButton: null, _switcherPanel: null, _switcherTarget: null, -@@ -110,15 +152,65 @@ var SidebarUI = { +@@ -110,15 +152,60 @@ var SidebarUI = { this._switcherTarget = document.getElementById("sidebar-switcher-target"); this._switcherArrow = document.getElementById("sidebar-switcher-arrow"); @@ -127,11 +127,6 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f + this.createSidebarItem(sidebaritem, this.sidebars.get(sidebaritem), true); + } + -+ //Add divider -+ const divider = document.createElement("hr"); -+ divider.classList.add("sidebar-divider"); -+ this._sidebarIcons.appendChild(divider); -+ + const sidebarVisible = Services.prefs.getBoolPref( + this.SIDEBAR_TABS_PREF, + true @@ -164,7 +159,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f }, uninit() { -@@ -127,7 +219,10 @@ var SidebarUI = { +@@ -127,7 +214,10 @@ var SidebarUI = { let enumerator = Services.wm.getEnumerator("navigator:browser"); if (!enumerator.hasMoreElements()) { let xulStore = Services.xulStore; @@ -176,7 +171,20 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f if (this._box.hasAttribute("positionend")) { xulStore.persist(this._box, "positionend"); -@@ -159,17 +254,30 @@ var SidebarUI = { +@@ -148,6 +238,12 @@ var SidebarUI = { + xulStore.persist(this._title, "value"); + } + ++ // Remove the sidebar seperator with class sidebar-divider ++ const sidebarDivider = document.querySelector(".sidebar-divider"); ++ if (sidebarDivider) { ++ sidebarDivider.remove(); ++ } ++ + Services.obs.removeObserver(this, "intl:app-locales-changed"); + + if (this._observer) { +@@ -159,17 +255,37 @@ var SidebarUI = { /** * The handler for Services.obs.addObserver. **/ @@ -204,6 +212,13 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f + break; + + case this.SIDEBAR_KEEP_TABS_ACTIVE_PREF: ++ ++ //Hide the sidebar if it is open ++ if (this.isOpen) { ++ this.hide(); ++ } ++ ++ this.uninit(); + this.init(); + break; + } @@ -211,7 +226,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f } } }, -@@ -485,6 +593,9 @@ var SidebarUI = { +@@ -485,6 +601,9 @@ var SidebarUI = { }, _loadSidebarExtension(commandID) { @@ -221,7 +236,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f let sidebar = this.sidebars.get(commandID); let { extensionId } = sidebar; if (extensionId) { -@@ -523,6 +634,7 @@ var SidebarUI = { +@@ -523,6 +642,7 @@ var SidebarUI = { } this._fireFocusedEvent(); @@ -229,7 +244,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f return true; }); }, -@@ -546,10 +658,29 @@ var SidebarUI = { +@@ -546,10 +666,29 @@ var SidebarUI = { } return this._show(commandID).then(() => { this._loadSidebarExtension(commandID); @@ -259,7 +274,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f /** * Implementation for show. Also used internally for sidebars that are shown * when a window is opened and we don't want to ping telemetry. -@@ -559,6 +690,31 @@ var SidebarUI = { +@@ -559,6 +698,31 @@ var SidebarUI = { */ _show(commandID) { return new Promise(resolve => { @@ -291,7 +306,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f this.selectMenuItem(commandID); this._box.hidden = this._splitter.hidden = false; -@@ -570,13 +726,16 @@ var SidebarUI = { +@@ -570,13 +734,16 @@ var SidebarUI = { this._box.setAttribute("sidebarcommand", commandID); this.lastOpenedId = commandID; @@ -306,11 +321,11 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f this.browser.setAttribute("src", url); // kick off async load - - if (this.browser.contentDocument.location.href != url) { -+ if (!this.loadedSidebars.includes(commandID) && this._keepTabsActivePref || this.browser.contentDocument.location.href != url && !this._keepTabsActivePref) { ++ if (!this.loadedSidebars.includes(commandID) && this._keepTabsActivePref || (this.browser.contentDocument.location.href != url || null) && !this._keepTabsActivePref) { this.browser.addEventListener( "load", event => { -@@ -615,22 +774,45 @@ var SidebarUI = { +@@ -615,22 +782,45 @@ var SidebarUI = { this.selectMenuItem(""); @@ -363,7 +378,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f }, /** -@@ -638,25 +820,112 @@ var SidebarUI = { +@@ -638,25 +828,121 @@ var SidebarUI = { * none if the argument is an empty string. */ selectMenuItem(commandID) { @@ -437,6 +452,15 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..c7ee3d8822946d78054bc99ca0392e7f + document.getElementById(`sidebar-background-${id}`).remove(); + } + ++ //if id contains ext ++ if (id.includes("ext")) { ++ if (document.getElementsByClassName("sidebar-divider").length == 0) { ++ const divider = document.createElement("hr"); ++ divider.classList.add("sidebar-divider"); ++ this._sidebarIcons.appendChild(divider); ++ } ++ } ++ + const background = document.createXULElement("vbox"); + background.classList.add("sidebar-item-background"); + background.setAttribute("id", `sidebar-background-${id}`); From b684d01651c4ce249d39b472e32c31f668181aca Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Sun, 1 Jan 2023 18:58:37 +1100 Subject: [PATCH 22/24] Change from preference key to settings item name --- .github/PULL_REQUEST_TEMPLATE/ff_update.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/ff_update.md b/.github/PULL_REQUEST_TEMPLATE/ff_update.md index 5bc76fc1..a53ed896 100644 --- a/.github/PULL_REQUEST_TEMPLATE/ff_update.md +++ b/.github/PULL_REQUEST_TEMPLATE/ff_update.md @@ -14,8 +14,8 @@ This bumps Firefox up to `{NEW_VERSION}` for security and performance reasons. R - [ ] Sidebar-Tabs is Loaded and has a button visible down the bottom - [ ] Sidebar-Tabs can add a sidebar item to the sidebar - [ ] Sidebar-Tabs can remove a sidebar item to the sidebar - - [ ] The sidebar keeps tabs active while closed when the preference `pulse.sidebar.keeptabsactive.enabled` is set to true - - [ ] The sidebar overwrites tabs when the preference `pulse.sidebar.keeptabsactive.enabled` is set to false + - [ ] The sidebar keeps tabs active while closed when keep sidebar tabs active is set to true + - [ ] The sidebar overwrites tabs when keep sidebar tabs active is set to false - [ ] Extensions From 0314571b0d7495c52134c463e9b9801f22e74adc Mon Sep 17 00:00:00 2001 From: TrickyPR <23250792+trickypr@users.noreply.github.com> Date: Sun, 1 Jan 2023 22:33:51 +1100 Subject: [PATCH 23/24] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Fix=20memory=20leak?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also, you forgot to run `./mach lint --fix [file]`, so the formatting has changed to be correct. --- .../base/content/browser-sidebar-js.patch | 90 +++++++++++-------- 1 file changed, 51 insertions(+), 39 deletions(-) diff --git a/src/browser/base/content/browser-sidebar-js.patch b/src/browser/base/content/browser-sidebar-js.patch index df36e0ef..b9ce311d 100644 --- a/src/browser/base/content/browser-sidebar-js.patch +++ b/src/browser/base/content/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js -index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31372a789e 100644 +index c5ac301416d2d820ba95e21c0ce1fe305e63b554..513dcacbe33770cfafb57bdcadfd64b6fb999eef 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -11,6 +11,10 @@ var SidebarUI = { @@ -42,8 +42,8 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 url: "chrome://browser/content/syncedtabs/sidebar.xhtml", menuId: "menu_tabsSidebar", + iconurl: "chrome://browser/skin/tab.svg", - }), - ], ++ }), ++ ], + [ + "viewDownloadsSidebar", + makeSidebar({ @@ -51,9 +51,9 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 + title: "Downloads", + url: "about:downloads", + menuId: "menu_downloadsSidebar", -+ iconurl: "chrome://browser/skin/downloads/downloads.svg" -+ }), -+ ], ++ iconurl: "chrome://browser/skin/downloads/downloads.svg", + }), + ], + [ + "sidebar-view-addons", + { @@ -86,7 +86,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 // lastOpenedId is set in show() but unlike currentID it's not cleared out on hide // and isn't persisted across windows -@@ -76,8 +115,11 @@ var SidebarUI = { +@@ -76,8 +115,13 @@ var SidebarUI = { } return (this.__title = document.getElementById("sidebar-title")); }, @@ -95,10 +95,12 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 _icon: null, + _sidebarIcons: null, + _sidebarIconsBottom: null, ++ /** @type {string[]} */ ++ loadedSidebars: null, _reversePositionButton: null, _switcherPanel: null, _switcherTarget: null, -@@ -110,15 +152,60 @@ var SidebarUI = { +@@ -110,15 +154,58 @@ var SidebarUI = { this._switcherTarget = document.getElementById("sidebar-switcher-target"); this._switcherArrow = document.getElementById("sidebar-switcher-arrow"); @@ -144,17 +146,15 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 this._initDeferred.resolve(); + -+ + //Check the pre-existance of sidebar and if it is not there, create it + var sidebar = this.browser; -+ let sidebarExists = sidebar ? true : false; ++ let sidebarExists = !!sidebar; + if (this._keepTabsActivePref && sidebarExists) { + sidebar.remove(); -+ } -+ else if (this._keepTabsActivePref && !sidebarExists) { ++ } else if (this._keepTabsActivePref && !sidebarExists) { + this.createBrowser("sidebar"); + } -+ ++ + this.loadedSidebars = []; }, @@ -165,7 +165,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 let xulStore = Services.xulStore; - xulStore.persist(this._box, "sidebarcommand"); + -+ if(!this._keepTabsActivePref){ ++ if (!this._keepTabsActivePref) { + xulStore.persist(this._box, "sidebarcommand"); + } @@ -184,7 +184,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 Services.obs.removeObserver(this, "intl:app-locales-changed"); if (this._observer) { -@@ -159,17 +255,37 @@ var SidebarUI = { +@@ -159,17 +255,47 @@ var SidebarUI = { /** * The handler for Services.obs.addObserver. **/ @@ -212,13 +212,23 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 + break; + + case this.SIDEBAR_KEEP_TABS_ACTIVE_PREF: -+ + //Hide the sidebar if it is open + if (this.isOpen) { + this.hide(); + } -+ ++ + this.uninit(); ++ ++ // We need to clean up all existing sidebar frames to prevent a memory leak. ++ for (const loadedSidebar of this.loadedSidebars) { ++ const elementId = `sidebar-browser-${loadedSidebar}`; ++ const element = document.getElementById(elementId); ++ ++ if (element) { ++ element.remove(); ++ } ++ } ++ + this.init(); + break; + } @@ -226,7 +236,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 } } }, -@@ -485,6 +601,9 @@ var SidebarUI = { +@@ -485,6 +611,9 @@ var SidebarUI = { }, _loadSidebarExtension(commandID) { @@ -236,7 +246,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 let sidebar = this.sidebars.get(commandID); let { extensionId } = sidebar; if (extensionId) { -@@ -523,6 +642,7 @@ var SidebarUI = { +@@ -523,6 +652,7 @@ var SidebarUI = { } this._fireFocusedEvent(); @@ -244,7 +254,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 return true; }); }, -@@ -546,10 +666,29 @@ var SidebarUI = { +@@ -546,10 +676,28 @@ var SidebarUI = { } return this._show(commandID).then(() => { this._loadSidebarExtension(commandID); @@ -253,7 +263,6 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 }); }, -+ + //Create sidebar browser between active and inactive for persistence reasons + createBrowser(id, commandID) { + let browser = document.createXULElement("browser"); @@ -274,18 +283,19 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 /** * Implementation for show. Also used internally for sidebars that are shown * when a window is opened and we don't want to ping telemetry. -@@ -559,6 +698,31 @@ var SidebarUI = { +@@ -559,6 +707,29 @@ var SidebarUI = { */ _show(commandID) { return new Promise(resolve => { -+ if (this._keepTabsActivePref){ ++ if (this._keepTabsActivePref) { ++ const elementId = `sidebar-browser-${commandID}`; ++ + //try and find browser with id sidebar-browser- -+ if (!document.getElementById("sidebar-browser-" + commandID)){ -+ this.createBrowser(("sidebar-browser-"+commandID),commandID); -+ } -+ else { ++ if (!document.getElementById(elementId)) { ++ this.createBrowser(elementId, commandID); ++ } else { + //browser already exists, get it -+ let browser = document.getElementById("sidebar-browser-" + commandID); ++ let browser = document.getElementById(elementId); + this._browser = browser; + } + @@ -294,19 +304,16 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 + for (let i = 0; i < browsers.length; i++) { + if (browsers[i].id != "sidebar-browser-" + commandID) { + browsers[i].setAttribute("hidden", "true"); -+ } -+ else -+ { ++ } else { + browsers[i].removeAttribute("hidden"); + } + } + } -+ + this.selectMenuItem(commandID); this._box.hidden = this._splitter.hidden = false; -@@ -570,13 +734,16 @@ var SidebarUI = { +@@ -570,13 +741,21 @@ var SidebarUI = { this._box.setAttribute("sidebarcommand", commandID); this.lastOpenedId = commandID; @@ -321,11 +328,16 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 this.browser.setAttribute("src", url); // kick off async load - - if (this.browser.contentDocument.location.href != url) { -+ if (!this.loadedSidebars.includes(commandID) && this._keepTabsActivePref || (this.browser.contentDocument.location.href != url || null) && !this._keepTabsActivePref) { ++ if ( ++ (!this.loadedSidebars.includes(commandID) && ++ this._keepTabsActivePref) || ++ ((this.browser.contentDocument.location.href != url || null) && ++ !this._keepTabsActivePref) ++ ) { this.browser.addEventListener( "load", event => { -@@ -615,22 +782,46 @@ var SidebarUI = { +@@ -615,22 +794,46 @@ var SidebarUI = { this.selectMenuItem(""); @@ -357,7 +369,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 - this.browser.setAttribute("src", "about:blank"); - this.browser.docShell.createAboutBlankContentViewer(null, null); + -+ if (!this._keepTabsActivePref){ ++ if (!this._keepTabsActivePref) { + this.browser.setAttribute("src", "about:blank"); + this.browser.docShell.createAboutBlankContentViewer(null, null); + } @@ -379,7 +391,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 }, /** -@@ -638,25 +829,121 @@ var SidebarUI = { +@@ -638,25 +841,121 @@ var SidebarUI = { * none if the argument is an empty string. */ selectMenuItem(commandID) { @@ -453,9 +465,9 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..7c1cb6f131eeaeeb677c2d14275cec31 + document.getElementById(`sidebar-background-${id}`).remove(); + } + -+ //if id contains ext ++ //if id contains ext + if (id.includes("ext")) { -+ if (document.getElementsByClassName("sidebar-divider").length == 0) { ++ if (!document.getElementsByClassName("sidebar-divider").length) { + const divider = document.createElement("hr"); + divider.classList.add("sidebar-divider"); + this._sidebarIcons.appendChild(divider); From c5175e13f96e73403f645124739e47095a1e9526 Mon Sep 17 00:00:00 2001 From: PressJump <40802367+PressJump@users.noreply.github.com> Date: Mon, 2 Jan 2023 05:17:14 +1100 Subject: [PATCH 24/24] =?UTF-8?q?=F0=9F=94=A5=20=20Weird,=20must=20have=20?= =?UTF-8?q?been=20a=20merge=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/browser/components/preferences/main-js.patch | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/browser/components/preferences/main-js.patch b/src/browser/components/preferences/main-js.patch index f26e3ee3..9d5c5e6b 100644 --- a/src/browser/components/preferences/main-js.patch +++ b/src/browser/components/preferences/main-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js -index a4a4ec894115afc70d203661f2b225adeeeaa8fc..6e39c59690e115ea484f55a70eb964b114c087fc 100644 +index 1ce4ba85a0df22b4176443c9003669577b6a230c..a582693e2b7e6fd1e150d25f51c9f578065ce14c 100644 --- a/browser/components/preferences/main.js +++ b/browser/components/preferences/main.js -@@ -161,6 +161,13 @@ Preferences.addAll([ +@@ -161,6 +161,12 @@ Preferences.addAll([ // Media { id: "media.hardwaremediakeys.enabled", type: "bool" }, @@ -10,7 +10,6 @@ index a4a4ec894115afc70d203661f2b225adeeeaa8fc..6e39c59690e115ea484f55a70eb964b1 + + // Pulse browser: custom settings + { id: 'pulse.sidebar.enabled', type: 'bool' }, -+ { id: 'pulse.sidebar.extensions.enabled', type: 'bool' }, + { id: 'pulse.sidebar.keeptabsactive.enabled', type: 'bool' }, + { id: 'pulse.tabs.vertical', type: 'bool' } ]);