mirror of
				https://github.com/zen-browser/desktop.git
				synced 2025-10-26 12:27:50 +00:00 
			
		
		
		
	feat: update preferences and UI components for new features and improvements
This commit is contained in:
		| @@ -1,8 +1,8 @@ | |||||||
| diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml | diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml | ||||||
| index 53e4616a99b7826453d5b6dea027184d90bc73f7..90c9fe5683411cf3087bebd3d0941decf6d23e89 100644 | index c64980810570fcea84e33fdc2d66ac42a79f4e46..b7198e810a7510fa82cc6801cfd01c88a08d42c1 100644 | ||||||
| --- a/browser/base/content/aboutDialog.xhtml | --- a/browser/base/content/aboutDialog.xhtml | ||||||
| +++ b/browser/base/content/aboutDialog.xhtml | +++ b/browser/base/content/aboutDialog.xhtml | ||||||
| @@ -34,6 +34,7 @@ | @@ -35,6 +35,7 @@ | ||||||
|   |   | ||||||
|      <html:link rel="localization" href="branding/brand.ftl"/> |      <html:link rel="localization" href="branding/brand.ftl"/> | ||||||
|      <html:link rel="localization" href="browser/aboutDialog.ftl"/> |      <html:link rel="localization" href="browser/aboutDialog.ftl"/> | ||||||
| @@ -10,7 +10,7 @@ index 53e4616a99b7826453d5b6dea027184d90bc73f7..90c9fe5683411cf3087bebd3d0941dec | |||||||
|    </linkset> |    </linkset> | ||||||
|   |   | ||||||
|    <html:div id="aboutDialogContainer"> |    <html:div id="aboutDialogContainer"> | ||||||
| @@ -124,21 +125,23 @@ | @@ -125,21 +126,23 @@ | ||||||
|              </description> |              </description> | ||||||
|            </vbox> |            </vbox> | ||||||
|            <description class="text-blurb" id="communityDesc" data-l10n-id="community-2"> |            <description class="text-blurb" id="communityDesc" data-l10n-id="community-2"> | ||||||
| @@ -30,8 +30,8 @@ index 53e4616a99b7826453d5b6dea027184d90bc73f7..90c9fe5683411cf3087bebd3d0941dec | |||||||
|      <vbox id="bottomBox"> |      <vbox id="bottomBox"> | ||||||
|        <hbox pack="center"> |        <hbox pack="center"> | ||||||
|          <label is="text-link" class="bottom-link" useoriginprincipal="true" href="about:license" data-l10n-id="bottomLinks-license"/> |          <label is="text-link" class="bottom-link" useoriginprincipal="true" href="about:license" data-l10n-id="bottomLinks-license"/> | ||||||
| -        <label is="text-link" class="bottom-link" href="https://www.mozilla.org/about/legal/terms/firefox/" data-l10n-id="bottomLinks-rights"/> | -        <label is="text-link" class="bottom-link" href="https://www.mozilla.org/about/legal/terms/firefox/" data-l10n-id="bottom-links-terms"/> | ||||||
| -        <label is="text-link" class="bottom-link" href="https://www.mozilla.org/privacy/firefox/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog" data-l10n-id="bottomLinks-privacy"/> | -        <label is="text-link" class="bottom-link" href="https://www.mozilla.org/privacy/firefox/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog" data-l10n-id="bottom-links-privacy"/> | ||||||
| +        <label is="text-link" class="bottom-link" href="about:rights" data-l10n-id="bottomLinks-rights"/> | +        <label is="text-link" class="bottom-link" href="about:rights" data-l10n-id="bottomLinks-rights"/> | ||||||
| +        <label is="text-link" class="bottom-link" href="https://www.zen-browser.app/privacy-policy/" data-l10n-id="bottomLinks-privacy"/> | +        <label is="text-link" class="bottom-link" href="https://www.zen-browser.app/privacy-policy/" data-l10n-id="bottomLinks-privacy"/> | ||||||
|        </hbox> |        </hbox> | ||||||
|   | |||||||
| @@ -1,17 +1,17 @@ | |||||||
| diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml | diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml | ||||||
| index 7d7e8697f02f90d4f336c9ab0a73a89848e0c21c..2fd19f3b43db4bdd99e65fecd1481f80d4541a7a 100644 | index 2ca8bdd2674fb4addf3bbf94ff17abc5c93c6293..49c772ae71e6b3793ff806d22197d3028ff4385f 100644 | ||||||
| --- a/browser/base/content/browser-box.inc.xhtml | --- a/browser/base/content/browser-box.inc.xhtml | ||||||
| +++ b/browser/base/content/browser-box.inc.xhtml | +++ b/browser/base/content/browser-box.inc.xhtml | ||||||
| @@ -23,7 +23,14 @@ | @@ -26,7 +26,14 @@ | ||||||
|      <browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/> |      <splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/> | ||||||
|    </vbox> |      <box id="after-splitter"></box> | ||||||
|    <splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/> |    </div> | ||||||
| +#include zen-sidebar-panel.inc.xhtml | +#include zen-sidebar-panel.inc.xhtml | ||||||
| +<vbox flex="1" id="zen-appcontent-wrapper"> | +<vbox flex="1" id="zen-appcontent-wrapper"> | ||||||
| +<html:div id="zen-appcontent-navbar-container"></html:div> | +<html:div id="zen-appcontent-navbar-container"></html:div> | ||||||
| +<hbox id="zen-tabbox-wrapper" flex="1"> | +<hbox id="zen-tabbox-wrapper" flex="1"> | ||||||
|    <tabbox id="tabbrowser-tabbox" flex="1" tabcontainer="tabbrowser-tabs"> |    <tabbox id="tabbrowser-tabbox" flex="1" tabcontainer="tabbrowser-tabs"> | ||||||
| +    #include zen-tabbrowser-elements.inc.xhtml | +#include zen-tabbrowser-elements.inc.xhtml | ||||||
|      <tabpanels id="tabbrowser-tabpanels" flex="1" selectedIndex="0"/> |      <tabpanels id="tabbrowser-tabpanels" flex="1" selectedIndex="0"/> | ||||||
|    </tabbox> |    </tabbox> | ||||||
|  </hbox> |  </hbox> | ||||||
|   | |||||||
| @@ -1,36 +1,17 @@ | |||||||
| diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js | diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js | ||||||
| index 63100defacf66c6b3232b9e0a783a5fd14e3a46a..398d685b142a47a85619dfc55772ea98ccfad445 100644 | index 3d5173315812589c0b79beec5f0419fc37cb8868..c4216db9e414fbbaead6ecd89b40366b0d8a50c1 100644 | ||||||
| --- a/browser/base/content/browser-init.js | --- a/browser/base/content/browser-init.js | ||||||
| +++ b/browser/base/content/browser-init.js | +++ b/browser/base/content/browser-init.js | ||||||
| @@ -162,13 +162,15 @@ var gBrowserInit = { | @@ -175,6 +175,8 @@ var gBrowserInit = { | ||||||
|          elem.setAttribute("skipintoolbarset", "true"); |    }, | ||||||
|        } |   | ||||||
|      } |    onLoad() { | ||||||
| +    ZenCustomizableUI.init(window); | +    Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window); | ||||||
|      for (let area of CustomizableUI.areas) { | +    Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window); | ||||||
|        let type = CustomizableUI.getAreaType(area); |      gBrowser.addEventListener("DOMUpdateBlockedPopups", e => | ||||||
| -      if (type == CustomizableUI.TYPE_TOOLBAR) { |        PopupBlockerObserver.handleEvent(e) | ||||||
| +      if (type == CustomizableUI.TYPE_TOOLBAR && !area.startsWith("zen-")) { |      ); | ||||||
|          let node = document.getElementById(area); | @@ -310,6 +312,7 @@ var gBrowserInit = { | ||||||
|          CustomizableUI.registerToolbarNode(node); |  | ||||||
|        } |  | ||||||
|      } |  | ||||||
| +    ZenCustomizableUI.registerToolbarNodes(window); |  | ||||||
|      if (isVerticalTabs) { |  | ||||||
|        // Show the vertical tabs toolbar |  | ||||||
|        setToolbarVisibility( |  | ||||||
| @@ -287,6 +289,10 @@ var gBrowserInit = { |  | ||||||
|      gPrivateBrowsingUI.init(); |  | ||||||
|      BrowserSearch.init(); |  | ||||||
|      BrowserPageActions.init(); |  | ||||||
| + |  | ||||||
| +Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window); |  | ||||||
| +Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window); |  | ||||||
| + |  | ||||||
|      if (gToolbarKeyNavEnabled) { |  | ||||||
|        ToolbarKeyboardNavigator.init(); |  | ||||||
|      } |  | ||||||
| @@ -365,6 +371,7 @@ var gBrowserInit = { |  | ||||||
|      TelemetryTimestamps.add("delayedStartupStarted"); |      TelemetryTimestamps.add("delayedStartupStarted"); | ||||||
|   |   | ||||||
|      this._cancelDelayedStartup(); |      this._cancelDelayedStartup(); | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js | diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js | ||||||
| index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4782c0cdc 100644 | index b89846a1103827b7e65c0b6c9197e80761e3f5c0..cc7205765244738743db92bfcafc1f288919ae0d 100644 | ||||||
| --- a/browser/base/content/browser.js | --- a/browser/base/content/browser.js | ||||||
| +++ b/browser/base/content/browser.js | +++ b/browser/base/content/browser.js | ||||||
| @@ -32,6 +32,7 @@ ChromeUtils.defineESModuleGetters(this, { | @@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, { | ||||||
|    ContextualIdentityService: |    ContextualIdentityService: | ||||||
|      "resource://gre/modules/ContextualIdentityService.sys.mjs", |      "resource://gre/modules/ContextualIdentityService.sys.mjs", | ||||||
|    CustomizableUI: "resource:///modules/CustomizableUI.sys.mjs", |    CustomizableUI: "resource:///modules/CustomizableUI.sys.mjs", | ||||||
| @@ -10,7 +10,7 @@ index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4 | |||||||
|    DevToolsSocketStatus: |    DevToolsSocketStatus: | ||||||
|      "resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs", |      "resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs", | ||||||
|    DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs", |    DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs", | ||||||
| @@ -3440,6 +3441,11 @@ var XULBrowserWindow = { | @@ -2698,6 +2699,11 @@ var XULBrowserWindow = { | ||||||
|      AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser); |      AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser); | ||||||
|      TranslationsParent.onLocationChange(gBrowser.selectedBrowser); |      TranslationsParent.onLocationChange(gBrowser.selectedBrowser); | ||||||
|   |   | ||||||
| @@ -22,27 +22,7 @@ index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4 | |||||||
|      PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); |      PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); | ||||||
|   |   | ||||||
|      if (!gMultiProcessBrowser) { |      if (!gMultiProcessBrowser) { | ||||||
| @@ -4435,7 +4441,7 @@ nsBrowserAccess.prototype = { | @@ -5194,7 +5200,7 @@ function switchToTabHavingURI( | ||||||
|      // Passing a null-URI to only create the content window, |  | ||||||
|      // and pass true for aSkipLoad to prevent loading of |  | ||||||
|      // about:blank |  | ||||||
| -    return this.getContentWindowOrOpenURIInFrame( |  | ||||||
| +    let res = this.getContentWindowOrOpenURIInFrame( |  | ||||||
|        null, |  | ||||||
|        aParams, |  | ||||||
|        aWhere, |  | ||||||
| @@ -4443,6 +4449,10 @@ nsBrowserAccess.prototype = { |  | ||||||
|        aName, |  | ||||||
|        true |  | ||||||
|      ); |  | ||||||
| +    if (typeof window.gZenGlanceManager !== "undefined" && window.toolbar.visible) { |  | ||||||
| +      window.gZenGlanceManager.onTabOpen(res, aURI); |  | ||||||
| +    } |  | ||||||
| +    return res; |  | ||||||
|    }, |  | ||||||
|   |  | ||||||
|    openURIInFrame: function browser_openURIInFrame( |  | ||||||
| @@ -6351,7 +6361,7 @@ function switchToTabHavingURI( |  | ||||||
|        ignoreQueryString || replaceQueryString, |        ignoreQueryString || replaceQueryString, | ||||||
|        ignoreFragmentWhenComparing |        ignoreFragmentWhenComparing | ||||||
|      ); |      ); | ||||||
| @@ -51,7 +31,7 @@ index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4 | |||||||
|      for (let i = 0; i < browsers.length; i++) { |      for (let i = 0; i < browsers.length; i++) { | ||||||
|        let browser = browsers[i]; |        let browser = browsers[i]; | ||||||
|        let browserCompare = cleanURL( |        let browserCompare = cleanURL( | ||||||
| @@ -6392,7 +6402,7 @@ function switchToTabHavingURI( | @@ -5235,7 +5241,7 @@ function switchToTabHavingURI( | ||||||
|          } |          } | ||||||
|   |   | ||||||
|          if (!doAdopt) { |          if (!doAdopt) { | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml | diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml | ||||||
| index 68849f5093cd8ab99ab0747d972799eaf3ad7e22..3b4e6a179ab7b71859f832709778c326a39cffda 100644 | index 0d0a559a6473149b50f4bf18d059e86907c4acd3..a5a48ba1d50b3bf74dec3f3d371a76228e246a9e 100644 | ||||||
| --- a/browser/base/content/browser.xhtml | --- a/browser/base/content/browser.xhtml | ||||||
| +++ b/browser/base/content/browser.xhtml | +++ b/browser/base/content/browser.xhtml | ||||||
| @@ -26,6 +26,7 @@ | @@ -26,6 +26,7 @@ | ||||||
| @@ -10,7 +10,7 @@ index 68849f5093cd8ab99ab0747d972799eaf3ad7e22..3b4e6a179ab7b71859f832709778c326 | |||||||
|          persist="screenX screenY width height sizemode" |          persist="screenX screenY width height sizemode" | ||||||
|          data-l10n-sync="true"> |          data-l10n-sync="true"> | ||||||
|  <head> |  <head> | ||||||
| @@ -100,6 +101,8 @@ | @@ -104,6 +105,8 @@ | ||||||
|   |   | ||||||
|    <title data-l10n-id="browser-main-window-default-title"></title> |    <title data-l10n-id="browser-main-window-default-title"></title> | ||||||
|   |   | ||||||
| @@ -19,15 +19,15 @@ index 68849f5093cd8ab99ab0747d972799eaf3ad7e22..3b4e6a179ab7b71859f832709778c326 | |||||||
|  # All JS files which are needed by browser.xhtml and other top level windows to |  # All JS files which are needed by browser.xhtml and other top level windows to | ||||||
|  # support MacOS specific features *must* go into the global-scripts.inc file so |  # support MacOS specific features *must* go into the global-scripts.inc file so | ||||||
|  # that they can be shared with macWindow.inc.xhtml. |  # that they can be shared with macWindow.inc.xhtml. | ||||||
| @@ -169,6 +172,7 @@ | @@ -148,6 +151,7 @@ | ||||||
|      }); |    window.addEventListener("DOMContentLoaded", | ||||||
|    }); |      gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true }); | ||||||
|  </script> |  </script> | ||||||
| +#include zen-assets.inc.xhtml | +#include zen-assets.inc.xhtml | ||||||
|  </head> |  </head> | ||||||
|  <html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> |  <html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> | ||||||
|  # All sets except for popupsets (commands, keys, and stringbundles) |  # All sets except for popupsets (commands, keys, and stringbundles) | ||||||
| @@ -190,9 +194,13 @@ | @@ -169,9 +173,13 @@ | ||||||
|      </vbox> |      </vbox> | ||||||
|    </html:template> |    </html:template> | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,19 +1,19 @@ | |||||||
| diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml | diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml | ||||||
| index 959c523b21c642f29353b9de37b3ce6b5505b01b..4cd26ea85ad4905bade71dcd470b8678079787bd 100644 | index 198c188e074b7062169764fb7d81c692d3a2bdae..b412a3c1fabdc6470b4ea9e7be34c426cc76aafd 100644 | ||||||
| --- a/browser/base/content/main-popupset.inc.xhtml | --- a/browser/base/content/main-popupset.inc.xhtml | ||||||
| +++ b/browser/base/content/main-popupset.inc.xhtml | +++ b/browser/base/content/main-popupset.inc.xhtml | ||||||
| @@ -206,6 +206,10 @@ | @@ -201,6 +201,10 @@ | ||||||
|             hidden="true" |             hidden="true" | ||||||
|             tabspecific="true" |             tabspecific="true" | ||||||
|             aria-labelledby="editBookmarkPanelTitle"> |             aria-labelledby="editBookmarkPanelTitle"> | ||||||
| +      <html:div id="zenEditBookmarkPanelFaviconContainer"> | +    <html:div id="zenEditBookmarkPanelFaviconContainer"> | ||||||
| +        <html:img id="zenEditBookmarkPanelFavicon"/> | +      <html:img id="zenEditBookmarkPanelFavicon"/> | ||||||
| +      </html:div> | +    </html:div> | ||||||
| +      <vbox> | +    <vbox> | ||||||
|        <box class="panel-header"> |        <box class="panel-header"> | ||||||
|          <html:h1> |          <html:h1> | ||||||
|            <html:span id="editBookmarkPanelTitle"/> |            <html:span id="editBookmarkPanelTitle"/> | ||||||
| @@ -231,6 +235,7 @@ | @@ -226,6 +230,7 @@ | ||||||
|                    class="footer-button"/> |                    class="footer-button"/> | ||||||
|          </html:moz-button-group> |          </html:moz-button-group> | ||||||
|        </vbox> |        </vbox> | ||||||
| @@ -21,21 +21,7 @@ index 959c523b21c642f29353b9de37b3ce6b5505b01b..4cd26ea85ad4905bade71dcd470b8678 | |||||||
|      </panel> |      </panel> | ||||||
|    </html:template> |    </html:template> | ||||||
|   |   | ||||||
| @@ -426,11 +431,13 @@ | @@ -567,6 +572,8 @@ | ||||||
|                observes="cmd_CustomizeToolbars" |  | ||||||
|                class="viewCustomizeToolbar" |  | ||||||
|                data-lazy-l10n-id="toolbar-context-menu-view-customize-toolbar-2"/> |  | ||||||
| +#if 0 |  | ||||||
|      <menuseparator id="sidebarRevampSeparator"/> |  | ||||||
|      <menuitem id="toolbar-context-toggle-vertical-tabs" |  | ||||||
|                data-lazy-l10n-id="toolbar-context-turn-on-vertical-tabs"/> |  | ||||||
|      <menuitem id="toolbar-context-customize-sidebar" |  | ||||||
|                data-lazy-l10n-id="toolbar-context-customize-sidebar"/> |  | ||||||
| +#endif |  | ||||||
|      <menuseparator contexttype="fullscreen"/> |  | ||||||
|      <menuitem id="toolbar-context-full-screen-autohide" |  | ||||||
|                class="fullscreen-context-autohide" |  | ||||||
| @@ -565,6 +572,8 @@ |  | ||||||
|   |   | ||||||
|  #include popup-notifications.inc.xhtml |  #include popup-notifications.inc.xhtml | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml | diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml | ||||||
| index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1c0d9968c 100644 | index feb9e4ef7e872b4cfbf0d55f24a34db275951c66..3ce9b9919ff736885b8aa8943bbbce3c5d0f33a6 100644 | ||||||
| --- a/browser/base/content/navigator-toolbox.inc.xhtml | --- a/browser/base/content/navigator-toolbox.inc.xhtml | ||||||
| +++ b/browser/base/content/navigator-toolbox.inc.xhtml | +++ b/browser/base/content/navigator-toolbox.inc.xhtml | ||||||
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||||||
| @@ -11,20 +11,18 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1 | |||||||
|    <script src="chrome://browser/content/navigator-toolbox.js" /> |    <script src="chrome://browser/content/navigator-toolbox.js" /> | ||||||
|   |   | ||||||
|    <!-- Menu --> |    <!-- Menu --> | ||||||
| @@ -17,9 +17,11 @@ | @@ -17,9 +17,8 @@ | ||||||
|  #include browser-menubar.inc |  #include browser-menubar.inc | ||||||
|      </toolbaritem> |      </toolbaritem> | ||||||
|      <spacer flex="1" skipintoolbarset="true" style="order: 1000;"/> |      <spacer flex="1" skipintoolbarset="true" style="order: 1000;"/> | ||||||
| +#if 0 | -#include titlebar-items.inc.xhtml | ||||||
|  #include titlebar-items.inc.xhtml |  | ||||||
| +#endif |  | ||||||
|    </toolbar> |    </toolbar> | ||||||
| - | - | ||||||
| +<hbox id="titlebar"> | +<hbox id="titlebar"> | ||||||
|    <toolbar id="TabsToolbar" |    <toolbar id="TabsToolbar" | ||||||
|             class="browser-toolbar browser-titlebar" |             class="browser-toolbar browser-titlebar" | ||||||
|             fullscreentoolbar="true" |             fullscreentoolbar="true" | ||||||
| @@ -32,7 +34,7 @@ | @@ -32,7 +31,7 @@ | ||||||
|   |   | ||||||
|      <hbox class="titlebar-spacer" type="pre-tabs"/> |      <hbox class="titlebar-spacer" type="pre-tabs"/> | ||||||
|   |   | ||||||
| @@ -33,18 +31,15 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1 | |||||||
|        <toolbartabstop/> |        <toolbartabstop/> | ||||||
|        <hbox id="TabsToolbar-customization-target" flex="1"> |        <hbox id="TabsToolbar-customization-target" flex="1"> | ||||||
|          <toolbarbutton id="firefox-view-button" |          <toolbarbutton id="firefox-view-button" | ||||||
| @@ -40,9 +42,9 @@ | @@ -40,6 +39,7 @@ | ||||||
|                         data-l10n-id="toolbar-button-firefox-view-2" |                         data-l10n-id="toolbar-button-firefox-view-2" | ||||||
|                         role="button" |                         role="button" | ||||||
|                         aria-pressed="false" |                         aria-pressed="false" | ||||||
| +                       hidden="true" | +                       hidden="true" | ||||||
|                         cui-areatype="toolbar" |                         cui-areatype="toolbar" | ||||||
|                         removable="true"/> |                         removable="true"/> | ||||||
| - |   | ||||||
|          <tabs id="tabbrowser-tabs" | @@ -50,6 +50,10 @@ | ||||||
|                is="tabbrowser-tabs" |  | ||||||
|                aria-multiselectable="true" |  | ||||||
| @@ -50,6 +52,10 @@ |  | ||||||
|                tooltip="tabbrowser-tab-tooltip" |                tooltip="tabbrowser-tab-tooltip" | ||||||
|                orient="horizontal" |                orient="horizontal" | ||||||
|                stopwatchid="FX_TAB_CLICK_MS"> |                stopwatchid="FX_TAB_CLICK_MS"> | ||||||
| @@ -55,16 +50,7 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1 | |||||||
|            <hbox class="tab-drop-indicator" hidden="true"/> |            <hbox class="tab-drop-indicator" hidden="true"/> | ||||||
|  # If the name (tabbrowser-arrowscrollbox) or structure of this changes |  # If the name (tabbrowser-arrowscrollbox) or structure of this changes | ||||||
|  # significantly, there is an optimization in |  # significantly, there is an optimization in | ||||||
| @@ -57,7 +63,7 @@ | @@ -75,6 +79,8 @@ | ||||||
|  # the current structure that we may want to revisit. |  | ||||||
|            <html:div id="vertical-pinned-tabs-container" tabindex="-1"></html:div> |  | ||||||
|            <html:div id="vertical-pinned-tabs-container-separator"></html:div> |  | ||||||
| -          <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend=""> |  | ||||||
| +          <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="vertical" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend=""> |  | ||||||
|              <tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/> |  | ||||||
|              <hbox id="tabbrowser-arrowscrollbox-periphery"> |  | ||||||
|                <toolbartabstop/> |  | ||||||
| @@ -75,6 +81,8 @@ |  | ||||||
|                                tooltip="dynamic-shortcut-tooltip" |                                tooltip="dynamic-shortcut-tooltip" | ||||||
|                                data-l10n-id="tabs-toolbar-new-tab"/> |                                data-l10n-id="tabs-toolbar-new-tab"/> | ||||||
|            <html:span id="tabbrowser-tab-a11y-desc" hidden="true"/> |            <html:span id="tabbrowser-tab-a11y-desc" hidden="true"/> | ||||||
| @@ -73,33 +59,28 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1 | |||||||
|          </tabs> |          </tabs> | ||||||
|   |   | ||||||
|          <toolbarbutton id="new-tab-button" |          <toolbarbutton id="new-tab-button" | ||||||
| @@ -100,11 +108,12 @@ | @@ -100,10 +106,10 @@ | ||||||
|  #include private-browsing-indicator.inc.xhtml |  #include private-browsing-indicator.inc.xhtml | ||||||
|      <toolbarbutton id="content-analysis-indicator" |      <toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/> | ||||||
|                     class="toolbarbutton-1 content-analysis-indicator-icon"/> |   | ||||||
| - | -#include titlebar-items.inc.xhtml | ||||||
| +#if 0 |  | ||||||
|  #include titlebar-items.inc.xhtml |  | ||||||
| - |  | ||||||
| +#endif |  | ||||||
| +#include zen-sidebar-icons.inc.xhtml | +#include zen-sidebar-icons.inc.xhtml | ||||||
|  |   | ||||||
|    </toolbar> |    </toolbar> | ||||||
| - | - | ||||||
| +</hbox> | +</hbox> | ||||||
|    <toolbar id="nav-bar" |    <toolbar id="nav-bar" | ||||||
|             class="browser-toolbar chromeclass-location" |             class="browser-toolbar chromeclass-location" | ||||||
|             data-l10n-id="navbar-accessible" |             data-l10n-id="navbar-accessible" | ||||||
| @@ -490,10 +499,12 @@ | @@ -489,10 +495,10 @@ | ||||||
|                       consumeanchor="PanelUI-button" |                       consumeanchor="PanelUI-button" | ||||||
|                       data-l10n-id="appmenu-menu-button-closed2"/> |                       data-l10n-id="appmenu-menu-button-closed2"/> | ||||||
|      </toolbaritem> |      </toolbaritem> | ||||||
| +#include titlebar-items.inc.xhtml | +#include titlebar-items.inc.xhtml | ||||||
|      <hbox class="titlebar-spacer" type="post-tabs"/> |      <hbox class="titlebar-spacer" type="post-tabs"/> | ||||||
|  #include private-browsing-indicator.inc.xhtml |  #include private-browsing-indicator.inc.xhtml | ||||||
| - |      <toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/> | ||||||
| +#if 0 | -#include titlebar-items.inc.xhtml | ||||||
|  #include titlebar-items.inc.xhtml |  | ||||||
| +#endif |  | ||||||
|    </toolbar> |    </toolbar> | ||||||
|   |   | ||||||
|    <toolbar id="PersonalToolbar" |    <toolbar id="PersonalToolbar" | ||||||
|   | |||||||
| @@ -1,19 +1,20 @@ | |||||||
| diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs | diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs | ||||||
| index b888a753a7f23a9800fe04da51a4e6b898314ff2..a6a01cf035253b05ea7b20b434cf2002ff115d96 100644 | index b8b6d30f0b3c968a8615ca601e06e50261d0dae6..5c2b718b902aed2ef8d7a4b622ba882ee937c655 100644 | ||||||
| --- a/browser/components/BrowserGlue.sys.mjs | --- a/browser/components/BrowserGlue.sys.mjs | ||||||
| +++ b/browser/components/BrowserGlue.sys.mjs | +++ b/browser/components/BrowserGlue.sys.mjs | ||||||
| @@ -121,6 +121,7 @@ ChromeUtils.defineESModuleGetters(lazy, { | @@ -106,6 +106,7 @@ ChromeUtils.defineESModuleGetters(lazy, { | ||||||
|    WindowsGPOParser: "resource://gre/modules/policies/WindowsGPOParser.sys.mjs", |    WindowsGPOParser: "resource://gre/modules/policies/WindowsGPOParser.sys.mjs", | ||||||
|    clearTimeout: "resource://gre/modules/Timer.sys.mjs", |    clearTimeout: "resource://gre/modules/Timer.sys.mjs", | ||||||
|    setTimeout: "resource://gre/modules/Timer.sys.mjs", |    setTimeout: "resource://gre/modules/Timer.sys.mjs", | ||||||
| +  gZenUIMigration: "chrome://browser/content/zen-components/ZenUIMigration.mjs", | +  gZenUIMigration: "chrome://browser/content/zen-components/ZenUIMigration.mjs", | ||||||
|  }); |  }); | ||||||
|   |   | ||||||
|  if (AppConstants.MOZ_UPDATER) { |  XPCOMUtils.defineLazyServiceGetters(lazy, { | ||||||
| @@ -1951,6 +1952,7 @@ BrowserGlue.prototype = { | @@ -1896,7 +1897,7 @@ BrowserGlue.prototype = { | ||||||
|   |      lazy.TabCrashHandler.init(); | ||||||
|      lazy.UrlbarPrefs.updateFirefoxSuggestScenario(); |  | ||||||
|   |   | ||||||
|  |      lazy.ProcessHangMonitor.init(); | ||||||
|  | - | ||||||
| +    lazy.gZenUIMigration.init(this._isNewProfile, aWindow); | +    lazy.gZenUIMigration.init(this._isNewProfile, aWindow); | ||||||
|      // A channel for "remote troubleshooting" code... |      // A channel for "remote troubleshooting" code... | ||||||
|      let channel = new lazy.WebChannel( |      let channel = new lazy.WebChannel( | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs | diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs | ||||||
| index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded349732ffc6 100644 | index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..6a68b53443d32461927ef98d770b297caaecf790 100644 | ||||||
| --- a/browser/components/customizableui/CustomizableUI.sys.mjs | --- a/browser/components/customizableui/CustomizableUI.sys.mjs | ||||||
| +++ b/browser/components/customizableui/CustomizableUI.sys.mjs | +++ b/browser/components/customizableui/CustomizableUI.sys.mjs | ||||||
| @@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, { | @@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, { | ||||||
| @@ -90,7 +90,27 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 | |||||||
|          } else { |          } else { | ||||||
|            window.gNavToolbox.palette.appendChild(widgetNode); |            window.gNavToolbox.palette.appendChild(widgetNode); | ||||||
|          } |          } | ||||||
| @@ -2678,7 +2677,6 @@ var CustomizableUIInternal = { | @@ -1704,16 +1703,16 @@ var CustomizableUIInternal = { | ||||||
|  |          elem.setAttribute("skipintoolbarset", "true"); | ||||||
|  |        } | ||||||
|  |      } | ||||||
|  | - | ||||||
|  | +    ZenCustomizableUI.init(window); | ||||||
|  |      // Now register all the toolbars | ||||||
|  |      for (let area of CustomizableUI.areas) { | ||||||
|  |        let type = CustomizableUI.getAreaType(area); | ||||||
|  | -      if (type == CustomizableUI.TYPE_TOOLBAR) { | ||||||
|  | +      if (type == CustomizableUI.TYPE_TOOLBAR && !area.startsWith("zen-")) { | ||||||
|  |          let node = document.getElementById(area); | ||||||
|  |          this.registerToolbarNode(node); | ||||||
|  |        } | ||||||
|  |      } | ||||||
|  | - | ||||||
|  | +    ZenCustomizableUI.registerToolbarNodes(window); | ||||||
|  |      // Handle initial state of vertical tabs. | ||||||
|  |      if (isVerticalTabs) { | ||||||
|  |        // Show the vertical tabs toolbar | ||||||
|  | @@ -2744,7 +2743,6 @@ var CustomizableUIInternal = { | ||||||
|      if (!this.isWidgetRemovable(aWidgetId)) { |      if (!this.isWidgetRemovable(aWidgetId)) { | ||||||
|        return; |        return; | ||||||
|      } |      } | ||||||
| @@ -98,7 +118,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 | |||||||
|      let placements = gPlacements.get(oldPlacement.area); |      let placements = gPlacements.get(oldPlacement.area); | ||||||
|      let position = placements.indexOf(aWidgetId); |      let position = placements.indexOf(aWidgetId); | ||||||
|      if (position != -1) { |      if (position != -1) { | ||||||
| @@ -3669,7 +3667,7 @@ var CustomizableUIInternal = { | @@ -3735,7 +3733,7 @@ var CustomizableUIInternal = { | ||||||
|      } |      } | ||||||
|    }, |    }, | ||||||
|   |   | ||||||
| @@ -107,7 +127,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 | |||||||
|      for (let [areaId, areaNodes] of gBuildAreas) { |      for (let [areaId, areaNodes] of gBuildAreas) { | ||||||
|        let placements = gPlacements.get(areaId); |        let placements = gPlacements.get(areaId); | ||||||
|        let isFirstChangedToolbar = true; |        let isFirstChangedToolbar = true; | ||||||
| @@ -3680,7 +3678,7 @@ var CustomizableUIInternal = { | @@ -3746,7 +3744,7 @@ var CustomizableUIInternal = { | ||||||
|          if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) { |          if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) { | ||||||
|            let defaultCollapsed = area.get("defaultCollapsed"); |            let defaultCollapsed = area.get("defaultCollapsed"); | ||||||
|            let win = areaNode.ownerGlobal; |            let win = areaNode.ownerGlobal; | ||||||
| @@ -116,7 +136,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 | |||||||
|              win.setToolbarVisibility( |              win.setToolbarVisibility( | ||||||
|                areaNode, |                areaNode, | ||||||
|                typeof defaultCollapsed == "string" |                typeof defaultCollapsed == "string" | ||||||
| @@ -4857,6 +4855,7 @@ export var CustomizableUI = { | @@ -4923,6 +4921,7 @@ export var CustomizableUI = { | ||||||
|    unregisterArea(aName, aDestroyPlacements) { |    unregisterArea(aName, aDestroyPlacements) { | ||||||
|      CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements); |      CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements); | ||||||
|    }, |    }, | ||||||
| @@ -124,7 +144,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 | |||||||
|    /** |    /** | ||||||
|     * Add a widget to an area. |     * Add a widget to an area. | ||||||
|     * If the area to which you try to add is not known to CustomizableUI, |     * If the area to which you try to add is not known to CustomizableUI, | ||||||
| @@ -6840,11 +6839,11 @@ class OverflowableToolbar { | @@ -6916,11 +6915,11 @@ class OverflowableToolbar { | ||||||
|          parseFloat(style.paddingLeft) - |          parseFloat(style.paddingLeft) - | ||||||
|          parseFloat(style.paddingRight) - |          parseFloat(style.paddingRight) - | ||||||
|          toolbarChildrenWidth; |          toolbarChildrenWidth; | ||||||
| @@ -138,7 +158,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 | |||||||
|      }); |      }); | ||||||
|   |   | ||||||
|      lazy.log.debug( |      lazy.log.debug( | ||||||
| @@ -6854,7 +6853,8 @@ class OverflowableToolbar { | @@ -6930,7 +6929,8 @@ class OverflowableToolbar { | ||||||
|      // If the target has min-width: 0, their children might actually overflow |      // If the target has min-width: 0, their children might actually overflow | ||||||
|      // it, so check for both cases explicitly. |      // it, so check for both cases explicitly. | ||||||
|      let targetContentWidth = Math.max(targetWidth, targetChildrenWidth); |      let targetContentWidth = Math.max(targetWidth, targetChildrenWidth); | ||||||
| @@ -148,7 +168,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 | |||||||
|      return { isOverflowing, targetContentWidth, totalAvailWidth }; |      return { isOverflowing, targetContentWidth, totalAvailWidth }; | ||||||
|    } |    } | ||||||
|   |   | ||||||
| @@ -6948,7 +6948,7 @@ class OverflowableToolbar { | @@ -7024,7 +7024,7 @@ class OverflowableToolbar { | ||||||
|          } |          } | ||||||
|        } |        } | ||||||
|        if (!inserted) { |        if (!inserted) { | ||||||
| @@ -157,7 +177,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 | |||||||
|        } |        } | ||||||
|        child.removeAttribute("cui-anchorid"); |        child.removeAttribute("cui-anchorid"); | ||||||
|        child.removeAttribute("overflowedItem"); |        child.removeAttribute("overflowedItem"); | ||||||
| @@ -7110,6 +7110,9 @@ class OverflowableToolbar { | @@ -7186,6 +7186,9 @@ class OverflowableToolbar { | ||||||
|     * @param {MouseEvent} aEvent the click event. |     * @param {MouseEvent} aEvent the click event. | ||||||
|     */ |     */ | ||||||
|    #onClickDefaultListButton(aEvent) { |    #onClickDefaultListButton(aEvent) { | ||||||
|   | |||||||
| @@ -1,22 +1,13 @@ | |||||||
| diff --git a/browser/components/customizableui/ToolbarContextMenu.sys.mjs b/browser/components/customizableui/ToolbarContextMenu.sys.mjs | diff --git a/browser/components/customizableui/ToolbarContextMenu.sys.mjs b/browser/components/customizableui/ToolbarContextMenu.sys.mjs | ||||||
| index 9879487f9ed9ddf825f5fb5c1467ddbd7fbe7a32..9e2565fafe0f5f9afa6065c9f4f522fec745db2a 100644 | index af22f766a052372a68faca139161cccbf0d768f0..ceff0576321f880c71ce301e537f4d03ccca8a73 100644 | ||||||
| --- a/browser/components/customizableui/ToolbarContextMenu.sys.mjs | --- a/browser/components/customizableui/ToolbarContextMenu.sys.mjs | ||||||
| +++ b/browser/components/customizableui/ToolbarContextMenu.sys.mjs | +++ b/browser/components/customizableui/ToolbarContextMenu.sys.mjs | ||||||
| @@ -237,17 +237,6 @@ export var ToolbarContextMenu = { | @@ -241,7 +241,7 @@ export var ToolbarContextMenu = { | ||||||
|      // autohide item's checked state to mirror the autohide pref. |      let sidebarRevampEnabled = Services.prefs.getBoolPref("sidebar.revamp"); | ||||||
|      showFullScreenViewContextMenuItems(popup); |      let showSidebarActions = | ||||||
|   |        ["tabbrowser-tabs", "sidebar-button"].includes(toolbarItem?.id) || | ||||||
| -    let toggleVerticalTabsItem = document.getElementById( | -      toolbarItem?.localName == "toolbarspring"; | ||||||
| -      "toolbar-context-toggle-vertical-tabs" | +      toolbarItem?.localName == "toolbarspring" && false; | ||||||
| -    ); |      let toggleVerticalTabsItem = document.getElementById( | ||||||
| -    document.l10n.setAttributes( |        "toolbar-context-toggle-vertical-tabs" | ||||||
| -      toggleVerticalTabsItem, |      ); | ||||||
| -      gBrowser.tabContainer?.verticalMode |  | ||||||
| -        ? "toolbar-context-turn-off-vertical-tabs" |  | ||||||
| -        : "toolbar-context-turn-on-vertical-tabs" |  | ||||||
| -    ); |  | ||||||
| -    document.getElementById("toolbar-context-customize-sidebar").hidden = |  | ||||||
| -      !gBrowser.tabContainer?.verticalMode; |  | ||||||
|   |  | ||||||
|      // View -> Toolbars menu doesn't have the moveToPanel or removeFromToolbar items. |  | ||||||
|      if (!moveToPanel || !removeFromToolbar) { |  | ||||||
|   | |||||||
| @@ -1,13 +0,0 @@ | |||||||
| diff --git a/browser/components/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx b/browser/components/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx |  | ||||||
| index 57ed935e93198bb50555d119080552934c49e428..21e8fb35501091d448502dbd0c53ee01ce8b7bc0 100644 |  | ||||||
| --- a/browser/components/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx |  | ||||||
| +++ b/browser/components/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx |  | ||||||
| @@ -153,7 +153,7 @@ export class ContentSection extends React.PureComponent { |  | ||||||
|                      data-l10n-args='{"num": 4}' |  | ||||||
|                    /> |  | ||||||
|                  </select> |  | ||||||
| -                {mayHaveSponsoredTopSites && ( |  | ||||||
| +                {false && ( |  | ||||||
|                    <div className="check-wrapper" role="presentation"> |  | ||||||
|                      <input |  | ||||||
|                        id="sponsored-shortcuts" |  | ||||||
| @@ -1,12 +0,0 @@ | |||||||
| diff --git a/browser/components/newtab/data/content/abouthomecache/page.html.template b/browser/components/newtab/data/content/abouthomecache/page.html.template |  | ||||||
| index 60898ed6b82ec298198cb9529387f4efd8561cc1..fbd93ccc7ee3619415192164a55f5fcbfd387a51 100644 |  | ||||||
| --- a/browser/components/newtab/data/content/abouthomecache/page.html.template |  | ||||||
| +++ b/browser/components/newtab/data/content/abouthomecache/page.html.template |  | ||||||
| @@ -32,6 +32,7 @@ |  | ||||||
|      <link rel="stylesheet" href="chrome://global/skin/design-system/tokens-brand.css"> |  | ||||||
|      <link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" /> |  | ||||||
|      <link rel="stylesheet" href="chrome://activity-stream/content/css/activity-stream.css" /> |  | ||||||
| +    <script src="chrome://browser/content/zenThemeModifier.js"></script> |  | ||||||
|    </head> |  | ||||||
|    <!-- Cached: {{ CACHE_TIME }} --> |  | ||||||
|    <body class="activity-stream"> |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| diff --git a/browser/components/newtab/lib/ActivityStream.sys.mjs b/browser/components/newtab/lib/ActivityStream.sys.mjs |  | ||||||
| index f46e8aadf053c1a567642cda5f728534c81c8223..9ba13e5988a1fbcbc0502bba46fe6cfa3c647d85 100644 |  | ||||||
| --- a/browser/components/newtab/lib/ActivityStream.sys.mjs |  | ||||||
| +++ b/browser/components/newtab/lib/ActivityStream.sys.mjs |  | ||||||
| @@ -127,7 +127,7 @@ export const PREFS_CONFIG = new Map([ |  | ||||||
|      "showSponsoredTopSites", |  | ||||||
|      { |  | ||||||
|        title: "Show sponsored top sites", |  | ||||||
| -      value: true, |  | ||||||
| +      value: false, |  | ||||||
|      }, |  | ||||||
|    ], |  | ||||||
|    [ |  | ||||||
| @@ -1,10 +1,10 @@ | |||||||
| diff --git a/browser/components/places/jar.mn b/browser/components/places/jar.mn | diff --git a/browser/components/places/jar.mn b/browser/components/places/jar.mn | ||||||
| index 7334914664484267ccf80eeeb2917c2001a1acaf..e0636a13798d6fbf41cbf69e51e460822b00ab1a 100644 | index e12c6bbf449f062fd22ef260909b539857f52c6a..2dcc143109de015e4c9d486b83119ae1122d2e71 100644 | ||||||
| --- a/browser/components/places/jar.mn | --- a/browser/components/places/jar.mn | ||||||
| +++ b/browser/components/places/jar.mn | +++ b/browser/components/places/jar.mn | ||||||
| @@ -25,3 +25,5 @@ browser.jar: | @@ -25,3 +25,5 @@ browser.jar: | ||||||
|  |      content/browser/places/interactionsViewer.css        (metadataViewer/interactionsViewer.css) | ||||||
|      content/browser/places/interactionsViewer.html       (metadataViewer/interactionsViewer.html) |      content/browser/places/interactionsViewer.html       (metadataViewer/interactionsViewer.html) | ||||||
|      content/browser/places/interactionsViewer.js         (metadataViewer/interactionsViewer.js) |      content/browser/places/interactionsViewer.js         (metadataViewer/interactionsViewer.js) | ||||||
|  #endif |  | ||||||
| +    content/browser/places/zenNewWebPanel.xhtml      (content/zenNewWebPanel.xhtml) | +    content/browser/places/zenNewWebPanel.xhtml      (content/zenNewWebPanel.xhtml) | ||||||
| +    content/browser/places/zenNewWebPanel.js         (content/zenNewWebPanel.js) | +    content/browser/places/zenNewWebPanel.js         (content/zenNewWebPanel.js) | ||||||
|   | |||||||
| @@ -1,14 +1,14 @@ | |||||||
| diff --git a/browser/components/sessionstore/TabGroupState.sys.mjs b/browser/components/sessionstore/TabGroupState.sys.mjs | diff --git a/browser/components/sessionstore/TabGroupState.sys.mjs b/browser/components/sessionstore/TabGroupState.sys.mjs | ||||||
| index 2406837c67d8ff590aa0db6c75ede81e53097506..b69fb7862cd76c891ef61e29aca8c10bab2f5d7e 100644 | index 934326aefc80479a2ca2ee9e376375f117512b4d..db840ead9ab53849f8f1f33864972347d43f9398 100644 | ||||||
| --- a/browser/components/sessionstore/TabGroupState.sys.mjs | --- a/browser/components/sessionstore/TabGroupState.sys.mjs | ||||||
| +++ b/browser/components/sessionstore/TabGroupState.sys.mjs | +++ b/browser/components/sessionstore/TabGroupState.sys.mjs | ||||||
| @@ -66,6 +66,9 @@ class _TabGroupState { | @@ -62,6 +62,9 @@ class _TabGroupState { | ||||||
|        name: tabGroup.label, |     */ | ||||||
|        color: tabGroup.color, |    collect(tabGroup) { | ||||||
|        collapsed: tabGroup.collapsed, |      return { | ||||||
| +      pinned: tabGroup.pinned, | +      pinned: tabGroup.pinned, | ||||||
| +      essential: tabGroup.essential, | +      essential: tabGroup.essential, | ||||||
| +      splitView: tabGroup.hasAttribute("split-view-group"), | +      splitView: tabGroup.hasAttribute("split-view-group"), | ||||||
|      }; |        id: tabGroup.id, | ||||||
|    } |        name: tabGroup.label, | ||||||
|   |        color: tabGroup.color, | ||||||
|   | |||||||
| @@ -1,22 +1,13 @@ | |||||||
| diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js | diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js | ||||||
| index 1937a01b9940c79782cc2ad002b09ea5938b89e0..a702e8c520fad651a98615215f94657b7e1c58eb 100644 | index 371190c058fa1eed91dc91b58608c934100e3a1b..440fe6fb403c3e78b3bfe68fb747d000b4a27521 100644 | ||||||
| --- a/browser/components/sidebar/browser-sidebar.js | --- a/browser/components/sidebar/browser-sidebar.js | ||||||
| +++ b/browser/components/sidebar/browser-sidebar.js | +++ b/browser/components/sidebar/browser-sidebar.js | ||||||
| @@ -671,7 +671,7 @@ var SidebarController = { | @@ -718,7 +718,7 @@ var SidebarController = { | ||||||
|     */ |          } | ||||||
|    setPosition() { |        }); | ||||||
|      // First reset all ordinals to match DOM ordering. |      } else { | ||||||
| -    let browser = document.getElementById("browser"); | -      let browser = document.getElementById("browser"); | ||||||
| +    let browser = document.getElementById("tabbrowser-tabbox"); | +      let browser = document.getElementById("tabbrowser-tabbox"); | ||||||
|      [...browser.children].forEach((node, i) => { |        [...browser.children].forEach((node, i) => { | ||||||
|        node.style.order = i + 1; |          node.style.order = i + 1; | ||||||
|      }); |        }); | ||||||
| @@ -681,7 +681,7 @@ var SidebarController = { |  | ||||||
|        // DOM ordering is:     sidebar-main |  launcher-splitter | sidebar-box  | splitter | tabbrowser-tabbox | |  | ||||||
|        // Want to display as:  |   tabbrowser-tabbox  | splitter |  sidebar-box  | launcher-splitter | sidebar-main |  | ||||||
|        // So we just swap box and tabbrowser-tabbox ordering and move sidebar-main to the end |  | ||||||
| -      let tabbox = document.getElementById("tabbrowser-tabbox"); |  | ||||||
| +      let tabbox = document.getElementById("tabbrowser-tabpanels"); |  | ||||||
|        let boxOrdinal = this._box.style.order; |  | ||||||
|        this._box.style.order = tabbox.style.order; |  | ||||||
|   |  | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js | diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js | ||||||
| index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7409d0582 100644 | index 0dc763824f390b4964489ac4e071ed6d41cc41db..3e0be2c686a162038e99b31fdbcf9832f184a629 100644 | ||||||
| --- a/browser/components/tabbrowser/content/tabbrowser.js | --- a/browser/components/tabbrowser/content/tabbrowser.js | ||||||
| +++ b/browser/components/tabbrowser/content/tabbrowser.js | +++ b/browser/components/tabbrowser/content/tabbrowser.js | ||||||
| @@ -412,11 +412,50 @@ | @@ -424,11 +424,50 @@ | ||||||
|        return this.tabContainer.visibleTabs; |        return this.tabContainer.visibleTabs; | ||||||
|      } |      } | ||||||
|   |   | ||||||
| @@ -55,7 +55,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        } |        } | ||||||
|        return i; |        return i; | ||||||
|      } |      } | ||||||
| @@ -546,6 +585,7 @@ | @@ -558,6 +597,7 @@ | ||||||
|        this.tabpanels.appendChild(panel); |        this.tabpanels.appendChild(panel); | ||||||
|   |   | ||||||
|        let tab = this.tabs[0]; |        let tab = this.tabs[0]; | ||||||
| @@ -63,7 +63,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        tab.linkedPanel = uniqueId; |        tab.linkedPanel = uniqueId; | ||||||
|        this._selectedTab = tab; |        this._selectedTab = tab; | ||||||
|        this._selectedBrowser = browser; |        this._selectedBrowser = browser; | ||||||
| @@ -811,12 +851,13 @@ | @@ -823,12 +863,13 @@ | ||||||
|        } |        } | ||||||
|   |   | ||||||
|        this.showTab(aTab); |        this.showTab(aTab); | ||||||
| @@ -72,7 +72,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
| +      const handled = gZenFolders.handleTabPin(aTab); | +      const handled = gZenFolders.handleTabPin(aTab); | ||||||
| +      if (!handled) this.ungroupTab(aTab); | +      if (!handled) this.ungroupTab(aTab); | ||||||
| +      if (this.tabContainer.verticalMode && !handled) { | +      if (this.tabContainer.verticalMode && !handled) { | ||||||
|          this._handleTabMove(aTab, () => |          this.#handleTabMove(aTab, () => | ||||||
| -          this.verticalPinnedTabsContainer.appendChild(aTab) | -          this.verticalPinnedTabsContainer.appendChild(aTab) | ||||||
| +          aTab.hasAttribute("zen-essential") ? document.getElementById("zen-essentials-container").appendChild(aTab) : this.verticalPinnedTabsContainer.insertBefore(aTab, this.verticalPinnedTabsContainer.lastChild) | +          aTab.hasAttribute("zen-essential") ? document.getElementById("zen-essentials-container").appendChild(aTab) : this.verticalPinnedTabsContainer.insertBefore(aTab, this.verticalPinnedTabsContainer.lastChild) | ||||||
|          ); |          ); | ||||||
| @@ -81,12 +81,12 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          this.moveTabTo(aTab, this.pinnedTabCount, { forceStandaloneTab: true }); |          this.moveTabTo(aTab, this.pinnedTabCount, { forceStandaloneTab: true }); | ||||||
|        } |        } | ||||||
|        aTab.setAttribute("pinned", "true"); |        aTab.setAttribute("pinned", "true"); | ||||||
| @@ -830,12 +871,15 @@ | @@ -842,12 +883,15 @@ | ||||||
|        } |        } | ||||||
|   |   | ||||||
|        if (this.tabContainer.verticalMode) { |        if (this.tabContainer.verticalMode) { | ||||||
| +        const handled = gZenFolders.handleTabUnpin(aTab); | +        const handled = gZenFolders.handleTabUnpin(aTab); | ||||||
|          this._handleTabMove(aTab, () => { |          this.#handleTabMove(aTab, () => { | ||||||
|            // we remove this attribute first, so that allTabs represents |            // we remove this attribute first, so that allTabs represents | ||||||
|            // the moving of a tab from the vertical pinned tabs container |            // the moving of a tab from the vertical pinned tabs container | ||||||
|            // and back into arrowscrollbox. |            // and back into arrowscrollbox. | ||||||
| @@ -98,7 +98,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          }); |          }); | ||||||
|        } else { |        } else { | ||||||
|          this.moveTabTo(aTab, this.pinnedTabCount - 1, { |          this.moveTabTo(aTab, this.pinnedTabCount - 1, { | ||||||
| @@ -1018,6 +1062,8 @@ | @@ -1030,6 +1074,8 @@ | ||||||
|   |   | ||||||
|        let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"]; |        let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"]; | ||||||
|   |   | ||||||
| @@ -107,7 +107,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        if ( |        if ( | ||||||
|          aIconURL && |          aIconURL && | ||||||
|          !aLoadingPrincipal && |          !aLoadingPrincipal && | ||||||
| @@ -1028,6 +1074,9 @@ | @@ -1040,6 +1086,9 @@ | ||||||
|          ); |          ); | ||||||
|          return; |          return; | ||||||
|        } |        } | ||||||
| @@ -117,7 +117,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|   |   | ||||||
|        let browser = this.getBrowserForTab(aTab); |        let browser = this.getBrowserForTab(aTab); | ||||||
|        browser.mIconURL = aIconURL; |        browser.mIconURL = aIconURL; | ||||||
| @@ -1273,6 +1322,7 @@ | @@ -1288,6 +1337,7 @@ | ||||||
|        if (!this._previewMode) { |        if (!this._previewMode) { | ||||||
|          newTab.recordTimeFromUnloadToReload(); |          newTab.recordTimeFromUnloadToReload(); | ||||||
|          newTab.updateLastAccessed(); |          newTab.updateLastAccessed(); | ||||||
| @@ -125,7 +125,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          oldTab.updateLastAccessed(); |          oldTab.updateLastAccessed(); | ||||||
|          // if this is the foreground window, update the last-seen timestamps. |          // if this is the foreground window, update the last-seen timestamps. | ||||||
|          if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) { |          if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) { | ||||||
| @@ -1425,6 +1475,9 @@ | @@ -1440,6 +1490,9 @@ | ||||||
|        } |        } | ||||||
|   |   | ||||||
|        let activeEl = document.activeElement; |        let activeEl = document.activeElement; | ||||||
| @@ -135,7 +135,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        // If focus is on the old tab, move it to the new tab. |        // If focus is on the old tab, move it to the new tab. | ||||||
|        if (activeEl == oldTab) { |        if (activeEl == oldTab) { | ||||||
|          newTab.focus(); |          newTab.focus(); | ||||||
| @@ -1748,7 +1801,7 @@ | @@ -1763,7 +1816,7 @@ | ||||||
|      } |      } | ||||||
|   |   | ||||||
|      _setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) { |      _setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) { | ||||||
| @@ -144,7 +144,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          return false; |          return false; | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -1851,7 +1904,7 @@ | @@ -1866,7 +1919,7 @@ | ||||||
|          newIndex = this.selectedTab._tPos + 1; |          newIndex = this.selectedTab._tPos + 1; | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -153,7 +153,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          let browser; |          let browser; | ||||||
|          if (targetTab) { |          if (targetTab) { | ||||||
|            browser = this.getBrowserForTab(targetTab); |            browser = this.getBrowserForTab(targetTab); | ||||||
| @@ -2108,6 +2161,7 @@ | @@ -2123,6 +2176,7 @@ | ||||||
|        uriIsAboutBlank, |        uriIsAboutBlank, | ||||||
|        userContextId, |        userContextId, | ||||||
|        skipLoad, |        skipLoad, | ||||||
| @@ -161,7 +161,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|      } = {}) { |      } = {}) { | ||||||
|        let b = document.createXULElement("browser"); |        let b = document.createXULElement("browser"); | ||||||
|        // Use the JSM global to create the permanentKey, so that if the |        // Use the JSM global to create the permanentKey, so that if the | ||||||
| @@ -2181,8 +2235,7 @@ | @@ -2196,8 +2250,7 @@ | ||||||
|          // we use a different attribute name for this? |          // we use a different attribute name for this? | ||||||
|          b.setAttribute("name", name); |          b.setAttribute("name", name); | ||||||
|        } |        } | ||||||
| @@ -171,7 +171,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          b.setAttribute("transparent", "true"); |          b.setAttribute("transparent", "true"); | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -2347,7 +2400,7 @@ | @@ -2374,7 +2427,7 @@ | ||||||
|   |   | ||||||
|        let panel = this.getPanel(browser); |        let panel = this.getPanel(browser); | ||||||
|        let uniqueId = this._generateUniquePanelID(); |        let uniqueId = this._generateUniquePanelID(); | ||||||
| @@ -180,7 +180,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        aTab.linkedPanel = uniqueId; |        aTab.linkedPanel = uniqueId; | ||||||
|   |   | ||||||
|        // Inject the <browser> into the DOM if necessary. |        // Inject the <browser> into the DOM if necessary. | ||||||
| @@ -2406,8 +2459,8 @@ | @@ -2433,8 +2486,8 @@ | ||||||
|        // If we transitioned from one browser to two browsers, we need to set |        // If we transitioned from one browser to two browsers, we need to set | ||||||
|        // hasSiblings=false on both the existing browser and the new browser. |        // hasSiblings=false on both the existing browser and the new browser. | ||||||
|        if (this.tabs.length == 2) { |        if (this.tabs.length == 2) { | ||||||
| @@ -191,7 +191,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        } else { |        } else { | ||||||
|          aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1; |          aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1; | ||||||
|        } |        } | ||||||
| @@ -2629,6 +2682,7 @@ | @@ -2656,6 +2709,7 @@ | ||||||
|          schemelessInput, |          schemelessInput, | ||||||
|          hasValidUserGestureActivation = false, |          hasValidUserGestureActivation = false, | ||||||
|          textDirectiveUserActivation = false, |          textDirectiveUserActivation = false, | ||||||
| @@ -199,7 +199,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        } = {} |        } = {} | ||||||
|      ) { |      ) { | ||||||
|        // all callers of addTab that pass a params object need to pass |        // all callers of addTab that pass a params object need to pass | ||||||
| @@ -2639,6 +2693,12 @@ | @@ -2666,6 +2720,12 @@ | ||||||
|          ); |          ); | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -212,7 +212,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        if (!UserInteraction.running("browser.tabs.opening", window)) { |        if (!UserInteraction.running("browser.tabs.opening", window)) { | ||||||
|          UserInteraction.start("browser.tabs.opening", "initting", window); |          UserInteraction.start("browser.tabs.opening", "initting", window); | ||||||
|        } |        } | ||||||
| @@ -2702,6 +2762,15 @@ | @@ -2729,6 +2789,15 @@ | ||||||
|            noInitialLabel, |            noInitialLabel, | ||||||
|            skipBackgroundNotify, |            skipBackgroundNotify, | ||||||
|          }); |          }); | ||||||
| @@ -228,7 +228,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          if (insertTab) { |          if (insertTab) { | ||||||
|            // insert the tab into the tab container in the correct position |            // insert the tab into the tab container in the correct position | ||||||
|            this._insertTabAtIndex(t, { |            this._insertTabAtIndex(t, { | ||||||
| @@ -2726,6 +2795,7 @@ | @@ -2753,6 +2822,7 @@ | ||||||
|            initialBrowsingContextGroupId, |            initialBrowsingContextGroupId, | ||||||
|            openWindowInfo, |            openWindowInfo, | ||||||
|            skipLoad, |            skipLoad, | ||||||
| @@ -236,7 +236,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          })); |          })); | ||||||
|   |   | ||||||
|          if (focusUrlBar) { |          if (focusUrlBar) { | ||||||
| @@ -2845,6 +2915,9 @@ | @@ -2872,6 +2942,9 @@ | ||||||
|          } |          } | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -246,7 +246,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        // Additionally send pinned tab events |        // Additionally send pinned tab events | ||||||
|        if (pinned) { |        if (pinned) { | ||||||
|          this._notifyPinnedStatus(t); |          this._notifyPinnedStatus(t); | ||||||
| @@ -2865,12 +2938,15 @@ | @@ -2892,12 +2965,15 @@ | ||||||
|       * @param {string} [label=] |       * @param {string} [label=] | ||||||
|       * @returns {MozTabbrowserTabGroup} |       * @returns {MozTabbrowserTabGroup} | ||||||
|       */ |       */ | ||||||
| @@ -263,15 +263,15 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        return group; |        return group; | ||||||
|      } |      } | ||||||
|   |   | ||||||
| @@ -2904,6 +2980,7 @@ | @@ -2938,6 +3014,7 @@ | ||||||
|          label = "", |  | ||||||
|          insertBefore = null, |          insertBefore = null, | ||||||
|          showCreateUI = false, |          isUserCreated = false, | ||||||
|  |          telemetryUserCreateSource = "unknown", | ||||||
| +        forSplitView = false, | +        forSplitView = false, | ||||||
|        } = {} |        } = {} | ||||||
|      ) { |      ) { | ||||||
|        if (!tabs?.length) { |        if (!tabs?.length) { | ||||||
| @@ -2918,7 +2995,12 @@ | @@ -2952,7 +3029,12 @@ | ||||||
|          id = `${Date.now()}-${Math.round(Math.random() * 100)}`; |          id = `${Date.now()}-${Math.round(Math.random() * 100)}`; | ||||||
|        } |        } | ||||||
|        let group = this._createTabGroup(id, color, false, label); |        let group = this._createTabGroup(id, color, false, label); | ||||||
| @@ -285,7 +285,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          group, |          group, | ||||||
|          insertBefore?.group ?? insertBefore |          insertBefore?.group ?? insertBefore | ||||||
|        ); |        ); | ||||||
| @@ -3126,6 +3208,7 @@ | @@ -3269,6 +3351,7 @@ | ||||||
|          initialBrowsingContextGroupId, |          initialBrowsingContextGroupId, | ||||||
|          openWindowInfo, |          openWindowInfo, | ||||||
|          skipLoad, |          skipLoad, | ||||||
| @@ -293,7 +293,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        } |        } | ||||||
|      ) { |      ) { | ||||||
|        // If we don't have a preferred remote type, and we have a remote |        // If we don't have a preferred remote type, and we have a remote | ||||||
| @@ -3189,6 +3272,7 @@ | @@ -3332,6 +3415,7 @@ | ||||||
|            openWindowInfo, |            openWindowInfo, | ||||||
|            name, |            name, | ||||||
|            skipLoad, |            skipLoad, | ||||||
| @@ -301,7 +301,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          }); |          }); | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -3367,6 +3451,27 @@ | @@ -3510,6 +3594,27 @@ | ||||||
|          ) { |          ) { | ||||||
|            tabWasReused = true; |            tabWasReused = true; | ||||||
|            tab = this.selectedTab; |            tab = this.selectedTab; | ||||||
| @@ -329,7 +329,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|            if (!tabData.pinned) { |            if (!tabData.pinned) { | ||||||
|              this.unpinTab(tab); |              this.unpinTab(tab); | ||||||
|            } else { |            } else { | ||||||
| @@ -3380,6 +3485,7 @@ | @@ -3523,6 +3628,7 @@ | ||||||
|              restoreTabsLazily && !select && !tabData.pinned; |              restoreTabsLazily && !select && !tabData.pinned; | ||||||
|   |   | ||||||
|            let url = "about:blank"; |            let url = "about:blank"; | ||||||
| @@ -337,7 +337,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|            if (tabData.entries?.length) { |            if (tabData.entries?.length) { | ||||||
|              let activeIndex = (tabData.index || tabData.entries.length) - 1; |              let activeIndex = (tabData.index || tabData.entries.length) - 1; | ||||||
|              // Ensure the index is in bounds. |              // Ensure the index is in bounds. | ||||||
| @@ -3415,7 +3521,27 @@ | @@ -3558,7 +3664,27 @@ | ||||||
|              skipLoad: true, |              skipLoad: true, | ||||||
|              preferredRemoteType, |              preferredRemoteType, | ||||||
|            }); |            }); | ||||||
| @@ -366,7 +366,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|            if (select) { |            if (select) { | ||||||
|              tabToSelect = tab; |              tabToSelect = tab; | ||||||
|            } |            } | ||||||
| @@ -3428,8 +3554,8 @@ | @@ -3571,8 +3697,8 @@ | ||||||
|            // inserted in the DOM. If the tab is not yet in the DOM, |            // inserted in the DOM. If the tab is not yet in the DOM, | ||||||
|            // just insert it in the right place from the start. |            // just insert it in the right place from the start. | ||||||
|            if (!tab.parentNode) { |            if (!tab.parentNode) { | ||||||
| @@ -377,7 +377,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|              tab.toggleAttribute("pinned", true); |              tab.toggleAttribute("pinned", true); | ||||||
|              this.tabContainer._invalidateCachedTabs(); |              this.tabContainer._invalidateCachedTabs(); | ||||||
|              // Then ensure all the tab open/pinning information is sent. |              // Then ensure all the tab open/pinning information is sent. | ||||||
| @@ -3439,7 +3565,8 @@ | @@ -3582,7 +3708,8 @@ | ||||||
|              // needs calling: |              // needs calling: | ||||||
|              shouldUpdateForPinnedTabs = true; |              shouldUpdateForPinnedTabs = true; | ||||||
|            } |            } | ||||||
| @@ -387,7 +387,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|            let { groupId } = tabData; |            let { groupId } = tabData; | ||||||
|            const tabGroup = tabGroupWorkingData.get(groupId); |            const tabGroup = tabGroupWorkingData.get(groupId); | ||||||
|            // if a tab refers to a tab group we don't know, skip any group |            // if a tab refers to a tab group we don't know, skip any group | ||||||
| @@ -3453,7 +3580,10 @@ | @@ -3596,7 +3723,10 @@ | ||||||
|                  tabGroup.stateData.id, |                  tabGroup.stateData.id, | ||||||
|                  tabGroup.stateData.color, |                  tabGroup.stateData.color, | ||||||
|                  tabGroup.stateData.collapsed, |                  tabGroup.stateData.collapsed, | ||||||
| @@ -399,7 +399,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|                ); |                ); | ||||||
|                tabsFragment.appendChild(tabGroup.node); |                tabsFragment.appendChild(tabGroup.node); | ||||||
|              } |              } | ||||||
| @@ -3504,6 +3634,9 @@ | @@ -3647,6 +3777,9 @@ | ||||||
|          this.selectedTab = tabToSelect; |          this.selectedTab = tabToSelect; | ||||||
|          this.removeTab(leftoverTab); |          this.removeTab(leftoverTab); | ||||||
|        } |        } | ||||||
| @@ -409,7 +409,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|   |   | ||||||
|        if (tabs.length > 1 || !tabs[0].selected) { |        if (tabs.length > 1 || !tabs[0].selected) { | ||||||
|          this._updateTabsAfterInsert(); |          this._updateTabsAfterInsert(); | ||||||
| @@ -3693,7 +3826,7 @@ | @@ -3831,7 +3964,7 @@ | ||||||
|        // Ensure we have an index if one was not provided. |        // Ensure we have an index if one was not provided. | ||||||
|        if (typeof index != "number") { |        if (typeof index != "number") { | ||||||
|          // Move the new tab after another tab if needed, to the end otherwise. |          // Move the new tab after another tab if needed, to the end otherwise. | ||||||
| @@ -418,7 +418,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          if ( |          if ( | ||||||
|            !bulkOrderedOpen && |            !bulkOrderedOpen && | ||||||
|            ((openerTab && |            ((openerTab && | ||||||
| @@ -3736,18 +3869,18 @@ | @@ -3877,18 +4010,18 @@ | ||||||
|   |   | ||||||
|        // Ensure index is within bounds. |        // Ensure index is within bounds. | ||||||
|        if (tab.pinned) { |        if (tab.pinned) { | ||||||
| @@ -441,7 +441,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          if (tabAfter && tabAfter.group == tabGroup) { |          if (tabAfter && tabAfter.group == tabGroup) { | ||||||
|            // Place at the front of, or between tabs in, the same tab group |            // Place at the front of, or between tabs in, the same tab group | ||||||
|            this.tabContainer.insertBefore(tab, tabAfter); |            this.tabContainer.insertBefore(tab, tabAfter); | ||||||
| @@ -4059,6 +4192,9 @@ | @@ -4200,6 +4333,9 @@ | ||||||
|          return; |          return; | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -451,7 +451,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        this.removeTabs(selectedTabs); |        this.removeTabs(selectedTabs); | ||||||
|      } |      } | ||||||
|   |   | ||||||
| @@ -4391,6 +4527,7 @@ | @@ -4557,6 +4693,7 @@ | ||||||
|          skipSessionStore, |          skipSessionStore, | ||||||
|        } = {} |        } = {} | ||||||
|      ) { |      ) { | ||||||
| @@ -459,7 +459,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        if (UserInteraction.running("browser.tabs.opening", window)) { |        if (UserInteraction.running("browser.tabs.opening", window)) { | ||||||
|          UserInteraction.finish("browser.tabs.opening", window); |          UserInteraction.finish("browser.tabs.opening", window); | ||||||
|        } |        } | ||||||
| @@ -4407,6 +4544,12 @@ | @@ -4573,6 +4710,12 @@ | ||||||
|          TelemetryStopwatch.start("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab); |          TelemetryStopwatch.start("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab); | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -472,7 +472,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        // Handle requests for synchronously removing an already |        // Handle requests for synchronously removing an already | ||||||
|        // asynchronously closing tab. |        // asynchronously closing tab. | ||||||
|        if (!animate && aTab.closing) { |        if (!animate && aTab.closing) { | ||||||
| @@ -4421,7 +4564,9 @@ | @@ -4587,7 +4730,9 @@ | ||||||
|        // frame created for it (for example, by updating the visually selected |        // frame created for it (for example, by updating the visually selected | ||||||
|        // state). |        // state). | ||||||
|        let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width; |        let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width; | ||||||
| @@ -483,7 +483,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        if ( |        if ( | ||||||
|          !this._beginRemoveTab(aTab, { |          !this._beginRemoveTab(aTab, { | ||||||
|            closeWindowFastpath: true, |            closeWindowFastpath: true, | ||||||
| @@ -4435,7 +4580,6 @@ | @@ -4601,7 +4746,6 @@ | ||||||
|          TelemetryStopwatch.cancel("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab); |          TelemetryStopwatch.cancel("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab); | ||||||
|          return; |          return; | ||||||
|        } |        } | ||||||
| @@ -491,7 +491,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        let lockTabSizing = |        let lockTabSizing = | ||||||
|          !this.tabContainer.verticalMode && |          !this.tabContainer.verticalMode && | ||||||
|          !aTab.pinned && |          !aTab.pinned && | ||||||
| @@ -4574,14 +4718,14 @@ | @@ -4740,14 +4884,14 @@ | ||||||
|          !!this.tabsInCollapsedTabGroups.length; |          !!this.tabsInCollapsedTabGroups.length; | ||||||
|        if ( |        if ( | ||||||
|          aTab.visible && |          aTab.visible && | ||||||
| @@ -508,7 +508,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|   |   | ||||||
|          if (closeWindow) { |          if (closeWindow) { | ||||||
|            // We've already called beforeunload on all the relevant tabs if we get here, |            // We've already called beforeunload on all the relevant tabs if we get here, | ||||||
| @@ -4605,6 +4749,7 @@ | @@ -4771,6 +4915,7 @@ | ||||||
|   |   | ||||||
|          newTab = true; |          newTab = true; | ||||||
|        } |        } | ||||||
| @@ -516,7 +516,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        aTab._endRemoveArgs = [closeWindow, newTab]; |        aTab._endRemoveArgs = [closeWindow, newTab]; | ||||||
|   |   | ||||||
|        // swapBrowsersAndCloseOther will take care of closing the window without animation. |        // swapBrowsersAndCloseOther will take care of closing the window without animation. | ||||||
| @@ -4645,9 +4790,7 @@ | @@ -4811,9 +4956,7 @@ | ||||||
|        aTab._mouseleave(); |        aTab._mouseleave(); | ||||||
|   |   | ||||||
|        if (newTab) { |        if (newTab) { | ||||||
| @@ -527,7 +527,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        } else { |        } else { | ||||||
|          TabBarVisibility.update(); |          TabBarVisibility.update(); | ||||||
|        } |        } | ||||||
| @@ -4776,6 +4919,8 @@ | @@ -4942,6 +5085,8 @@ | ||||||
|          this.tabs[i]._tPos = i; |          this.tabs[i]._tPos = i; | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -536,7 +536,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        if (!this._windowIsClosing) { |        if (!this._windowIsClosing) { | ||||||
|          if (wasPinned) { |          if (wasPinned) { | ||||||
|            this.tabContainer._positionPinnedTabs(); |            this.tabContainer._positionPinnedTabs(); | ||||||
| @@ -4994,7 +5139,7 @@ | @@ -5160,7 +5305,7 @@ | ||||||
|          !excludeTabs.has(aTab.owner) && |          !excludeTabs.has(aTab.owner) && | ||||||
|          Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose") |          Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose") | ||||||
|        ) { |        ) { | ||||||
| @@ -545,7 +545,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        } |        } | ||||||
|   |   | ||||||
|        // Try to find a remaining tab that comes after the given tab |        // Try to find a remaining tab that comes after the given tab | ||||||
| @@ -5016,7 +5161,7 @@ | @@ -5182,7 +5327,7 @@ | ||||||
|        } |        } | ||||||
|   |   | ||||||
|        if (tab) { |        if (tab) { | ||||||
| @@ -554,7 +554,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        } |        } | ||||||
|   |   | ||||||
|        // If no qualifying visible tab was found, see if there is a tab in |        // If no qualifying visible tab was found, see if there is a tab in | ||||||
| @@ -5434,10 +5579,10 @@ | @@ -5600,10 +5745,10 @@ | ||||||
|        SessionStore.deleteCustomTabValue(aTab, "hiddenBy"); |        SessionStore.deleteCustomTabValue(aTab, "hiddenBy"); | ||||||
|      } |      } | ||||||
|   |   | ||||||
| @@ -567,8 +567,8 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          aTab.selected || |          aTab.selected || | ||||||
|          aTab.closing || |          aTab.closing || | ||||||
|          // Tabs that are sharing the screen, microphone or camera cannot be hidden. |          // Tabs that are sharing the screen, microphone or camera cannot be hidden. | ||||||
| @@ -5675,7 +5820,7 @@ | @@ -5839,7 +5984,7 @@ | ||||||
|   |      moveTabTo(aTab, aIndex, { forceStandaloneTab = false } = {}) { | ||||||
|        // Don't allow mixing pinned and unpinned tabs. |        // Don't allow mixing pinned and unpinned tabs. | ||||||
|        if (aTab.pinned) { |        if (aTab.pinned) { | ||||||
| -        aIndex = Math.min(aIndex, this.pinnedTabCount - 1); | -        aIndex = Math.min(aIndex, this.pinnedTabCount - 1); | ||||||
| @@ -576,16 +576,16 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        } else { |        } else { | ||||||
|          aIndex = Math.max(aIndex, this.pinnedTabCount); |          aIndex = Math.max(aIndex, this.pinnedTabCount); | ||||||
|        } |        } | ||||||
| @@ -5685,10 +5830,17 @@ | @@ -5849,10 +5994,17 @@ | ||||||
|   |   | ||||||
|        this._handleTabMove(aTab, () => { |        this.#handleTabMove(aTab, () => { | ||||||
|          let neighbor = this.tabs[aIndex]; |          let neighbor = this.tabs[aIndex]; | ||||||
| -        if (forceStandaloneTab && neighbor.group) { | -        if (forceStandaloneTab && neighbor.group) { | ||||||
| +        const _tPos = aTab._tPos; | +        const _tPos = aTab._tPos; | ||||||
| +        if ((forceStandaloneTab && neighbor.group) || neighbor.group?.hasAttribute("split-view-group")) { | +        if ((forceStandaloneTab && neighbor.group) || neighbor.group?.hasAttribute("split-view-group")) { | ||||||
|            neighbor = neighbor.group; |            neighbor = neighbor.group; | ||||||
|          } |          } | ||||||
| -        if (neighbor && aIndex >= aTab._tPos) { | -        if (neighbor && aIndex > aTab._tPos) { | ||||||
| +        if (aTab.group?.hasAttribute("split-view-group")) { | +        if (aTab.group?.hasAttribute("split-view-group")) { | ||||||
| +          aTab = aTab.group; | +          aTab = aTab.group; | ||||||
| +        } | +        } | ||||||
| @@ -596,7 +596,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|            neighbor.after(aTab); |            neighbor.after(aTab); | ||||||
|          } else { |          } else { | ||||||
|            this.tabContainer.insertBefore(aTab, neighbor); |            this.tabContainer.insertBefore(aTab, neighbor); | ||||||
| @@ -5697,7 +5849,7 @@ | @@ -5938,7 +6090,7 @@ | ||||||
|      } |      } | ||||||
|   |   | ||||||
|      moveTabToGroup(aTab, aGroup) { |      moveTabToGroup(aTab, aGroup) { | ||||||
| @@ -605,7 +605,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|          return; |          return; | ||||||
|        } |        } | ||||||
|        if (aTab.group && aTab.group.id === aGroup.id) { |        if (aTab.group && aTab.group.id === aGroup.id) { | ||||||
| @@ -5721,6 +5873,10 @@ | @@ -5962,6 +6114,10 @@ | ||||||
|   |   | ||||||
|        moveActionCallback(); |        moveActionCallback(); | ||||||
|   |   | ||||||
| @@ -616,7 +616,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        // Clear tabs cache after moving nodes because the order of tabs may have |        // Clear tabs cache after moving nodes because the order of tabs may have | ||||||
|        // changed. |        // changed. | ||||||
|        this.tabContainer._invalidateCachedTabs(); |        this.tabContainer._invalidateCachedTabs(); | ||||||
| @@ -5771,7 +5927,7 @@ | @@ -6016,7 +6172,7 @@ | ||||||
|          createLazyBrowser, |          createLazyBrowser, | ||||||
|        }; |        }; | ||||||
|   |   | ||||||
| @@ -625,7 +625,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|        if (aIndex < numPinned || (aTab.pinned && aIndex == numPinned)) { |        if (aIndex < numPinned || (aTab.pinned && aIndex == numPinned)) { | ||||||
|          params.pinned = true; |          params.pinned = true; | ||||||
|        } |        } | ||||||
| @@ -6513,7 +6669,7 @@ | @@ -6766,7 +6922,7 @@ | ||||||
|              // preventDefault(). It will still raise the window if appropriate. |              // preventDefault(). It will still raise the window if appropriate. | ||||||
|              break; |              break; | ||||||
|            } |            } | ||||||
| @@ -634,7 +634,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|            window.focus(); |            window.focus(); | ||||||
|            aEvent.preventDefault(); |            aEvent.preventDefault(); | ||||||
|            break; |            break; | ||||||
| @@ -7415,6 +7571,7 @@ | @@ -7672,6 +7828,7 @@ | ||||||
|              aWebProgress.isTopLevel |              aWebProgress.isTopLevel | ||||||
|            ) { |            ) { | ||||||
|              this.mTab.setAttribute("busy", "true"); |              this.mTab.setAttribute("busy", "true"); | ||||||
| @@ -642,25 +642,25 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..2a9ac30c7e270586ff4502046e5b1ae7 | |||||||
|              gBrowser._tabAttrModified(this.mTab, ["busy"]); |              gBrowser._tabAttrModified(this.mTab, ["busy"]); | ||||||
|              this.mTab._notselectedsinceload = !this.mTab.selected; |              this.mTab._notselectedsinceload = !this.mTab.selected; | ||||||
|            } |            } | ||||||
| @@ -8381,7 +8538,7 @@ var TabContextMenu = { | @@ -8641,7 +8798,7 @@ var TabContextMenu = { | ||||||
|      ); |      ); | ||||||
|      contextUnpinSelectedTabs.hidden = |      contextUnpinSelectedTabs.hidden = | ||||||
|        !this.contextTab.pinned || !multiselectionContext; |        !this.contextTab.pinned || !this.multiselected; | ||||||
| - | - | ||||||
| +    gZenPinnedTabManager.updatePinnedTabContextMenu(this.contextTab); | +    gZenPinnedTabManager.updatePinnedTabContextMenu(this.contextTab); | ||||||
|      // Move Tab items |      // Move Tab items | ||||||
|      let contextMoveTabOptions = document.getElementById( |      let contextMoveTabOptions = document.getElementById( | ||||||
|        "context_moveTabOptions" |        "context_moveTabOptions" | ||||||
| @@ -8414,7 +8571,7 @@ var TabContextMenu = { | @@ -8675,7 +8832,7 @@ var TabContextMenu = { | ||||||
|      let contextMoveTabToStart = document.getElementById("context_moveToStart"); |  | ||||||
|      let isFirstTab = |      let isFirstTab = | ||||||
|        tabsToMove[0] == visibleTabs[0] || |        !this.contextTabs[0].group && | ||||||
| -      tabsToMove[0] == visibleTabs[gBrowser.pinnedTabCount]; |        (this.contextTabs[0] == visibleTabs[0] || | ||||||
| +      tabsToMove[0] == visibleTabs[gBrowser._numVisiblePinTabs]; | -        this.contextTabs[0] == visibleTabs[gBrowser.pinnedTabCount]); | ||||||
|  | +      this.contextTabs[0] == visibleTabs[gBrowser._numVisiblePinTabs]; | ||||||
|      contextMoveTabToStart.disabled = isFirstTab && allSelectedTabsAdjacent; |      contextMoveTabToStart.disabled = isFirstTab && allSelectedTabsAdjacent; | ||||||
|   |   | ||||||
|      document.getElementById("context_openTabInWindow").disabled = |      document.getElementById("context_openTabInWindow").disabled = | ||||||
| @@ -8647,6 +8804,7 @@ var TabContextMenu = { | @@ -8905,6 +9062,7 @@ var TabContextMenu = { | ||||||
|      if (this.contextTab.multiselected) { |      if (this.contextTab.multiselected) { | ||||||
|        gBrowser.removeMultiSelectedTabs(); |        gBrowser.removeMultiSelectedTabs(); | ||||||
|      } else { |      } else { | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js | diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js | ||||||
| index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d734668f2a 100644 | index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..0175072d29597633c04724b1824e2187bcdda61d 100644 | ||||||
| --- a/browser/components/tabbrowser/content/tabs.js | --- a/browser/components/tabbrowser/content/tabs.js | ||||||
| +++ b/browser/components/tabbrowser/content/tabs.js | +++ b/browser/components/tabbrowser/content/tabs.js | ||||||
| @@ -94,7 +94,7 @@ | @@ -93,7 +93,7 @@ | ||||||
|        }; |        }; | ||||||
|        this.arrowScrollbox._canScrollToElement = element => { |        this.arrowScrollbox._canScrollToElement = element => { | ||||||
|          if (isTab(element)) { |          if (isTab(element)) { | ||||||
| @@ -11,7 +11,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|          } |          } | ||||||
|          return true; |          return true; | ||||||
|        }; |        }; | ||||||
| @@ -339,7 +339,7 @@ | @@ -347,7 +347,7 @@ | ||||||
|        // and we're not hitting the scroll buttons. |        // and we're not hitting the scroll buttons. | ||||||
|        if ( |        if ( | ||||||
|          event.button != 0 || |          event.button != 0 || | ||||||
| @@ -20,7 +20,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|          event.composedTarget.localName == "toolbarbutton" |          event.composedTarget.localName == "toolbarbutton" | ||||||
|        ) { |        ) { | ||||||
|          return; |          return; | ||||||
| @@ -388,6 +388,7 @@ | @@ -396,6 +396,7 @@ | ||||||
|              // Reset the "ignored click" flag |              // Reset the "ignored click" flag | ||||||
|              target._ignoredCloseButtonClicks = false; |              target._ignoredCloseButtonClicks = false; | ||||||
|            } |            } | ||||||
| @@ -28,7 +28,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|          } |          } | ||||||
|   |   | ||||||
|          /* Protects from close-tab-button errant doubleclick: |          /* Protects from close-tab-button errant doubleclick: | ||||||
| @@ -683,7 +684,7 @@ | @@ -693,7 +694,7 @@ | ||||||
|        if (this.#isContainerVerticalPinnedExpanded(tab)) { |        if (this.#isContainerVerticalPinnedExpanded(tab)) { | ||||||
|          // In expanded vertical mode, the max number of pinned tabs per row is dynamic |          // In expanded vertical mode, the max number of pinned tabs per row is dynamic | ||||||
|          // Set this before adjusting dragged tab's position |          // Set this before adjusting dragged tab's position | ||||||
| @@ -37,7 +37,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|          let tabsPerRow = 0; |          let tabsPerRow = 0; | ||||||
|          let position = 0; |          let position = 0; | ||||||
|          for (let pinnedTab of pinnedTabs) { |          for (let pinnedTab of pinnedTabs) { | ||||||
| @@ -883,6 +884,10 @@ | @@ -899,6 +900,10 @@ | ||||||
|        } |        } | ||||||
|   |   | ||||||
|        let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0); |        let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0); | ||||||
| @@ -48,7 +48,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|        if ( |        if ( | ||||||
|          (effects == "move" || effects == "copy") && |          (effects == "move" || effects == "copy") && | ||||||
|          this == draggedTab.container && |          this == draggedTab.container && | ||||||
| @@ -996,6 +1001,18 @@ | @@ -1012,6 +1017,18 @@ | ||||||
|   |   | ||||||
|        this._tabDropIndicator.hidden = true; |        this._tabDropIndicator.hidden = true; | ||||||
|        event.stopPropagation(); |        event.stopPropagation(); | ||||||
| @@ -67,41 +67,32 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|        if (draggedTab && dropEffect == "copy") { |        if (draggedTab && dropEffect == "copy") { | ||||||
|          // copy the dropped tab (wherever it's from) |          // copy the dropped tab (wherever it's from) | ||||||
|          let newIndex = this._getDropIndex(event); |          let newIndex = this._getDropIndex(event); | ||||||
| @@ -1034,10 +1051,11 @@ | @@ -1050,10 +1067,11 @@ | ||||||
|            } |            } | ||||||
|          } else { |          } else { | ||||||
|            let pinned = draggedTab.pinned; |            let isPinned = draggedTab.pinned; | ||||||
| -          let numPinned = gBrowser.pinnedTabCount; | -          let numPinned = gBrowser.pinnedTabCount; | ||||||
| -          let tabs = this.visibleTabs.slice( | -          let tabs = this.ariaFocusableItems.slice( | ||||||
| -            pinned ? 0 : numPinned, | -            isPinned ? 0 : numPinned, | ||||||
| -            pinned ? numPinned : undefined | -            isPinned ? numPinned : undefined | ||||||
| +          let numPinned = gBrowser._numVisiblePinTabs; | +          let numPinned = gBrowser._numVisiblePinTabs; | ||||||
| +          let essential = draggedTab.hasAttribute("zen-essential"); | +          let essential = draggedTab.hasAttribute("zen-essential"); | ||||||
| +          let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice( | +          let tabs = this.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice( | ||||||
| +            pinned ? (essential ? 0 : gBrowser._numZenVisibleEssentials) : numPinned, | +            isPinned ? (essential ? 0 : gBrowser._numZenVisibleEssentials) : numPinned, | ||||||
| +            pinned ? (essential ? gBrowser._numZenVisibleEssentials : numPinned) : undefined | +            isPinned ? (essential ? gBrowser._numZenVisibleEssentials : numPinned) : undefined | ||||||
|            ); |            ); | ||||||
|            let size = this.verticalMode ? "height" : "width"; |            let size = this.verticalMode ? "height" : "width"; | ||||||
|            let screenAxis = this.verticalMode ? "screenY" : "screenX"; |            let screenAxis = this.verticalMode ? "screenY" : "screenX"; | ||||||
| @@ -1114,7 +1132,7 @@ | @@ -1129,7 +1147,7 @@ | ||||||
|                let postTransitionCleanup = () => { |  | ||||||
|                  tab.removeAttribute("tabdrop-samewindow"); |                  tab.removeAttribute("tabdrop-samewindow"); | ||||||
|   |                  resolve(); | ||||||
| -                this._finishAnimateTabMove(); |  | ||||||
| +              this._finishAnimateTabMove(true); |  | ||||||
|                  if (dropIndex !== false) { |  | ||||||
|                    gBrowser.moveTabTo(tab, dropIndex); |  | ||||||
|                    if (!directionForward) { |  | ||||||
| @@ -1122,7 +1140,7 @@ |  | ||||||
|                    } |  | ||||||
|                  } |  | ||||||
|                }; |                }; | ||||||
| -              if (gReduceMotion) { | -              if (gReduceMotion) { | ||||||
| +              if (true || gReduceMotion) { | +              if (true || gReduceMotion) { | ||||||
|                  postTransitionCleanup(); |                  postTransitionCleanup(); | ||||||
|                } else { |                } else { | ||||||
|                  let onTransitionEnd = transitionendEvent => { |                  let onTransitionEnd = transitionendEvent => { | ||||||
| @@ -1249,7 +1267,7 @@ | @@ -1246,7 +1264,7 @@ | ||||||
|                return; |                return; | ||||||
|              } |              } | ||||||
|            } |            } | ||||||
| @@ -110,7 +101,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|            gBrowser.loadTabs(urls, { |            gBrowser.loadTabs(urls, { | ||||||
|              inBackground, |              inBackground, | ||||||
|              replace, |              replace, | ||||||
| @@ -1279,13 +1297,23 @@ | @@ -1276,13 +1294,23 @@ | ||||||
|          return; |          return; | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -136,7 +127,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|        ) { |        ) { | ||||||
|          delete draggedTab._dragData; |          delete draggedTab._dragData; | ||||||
|          return; |          return; | ||||||
| @@ -1517,7 +1545,7 @@ | @@ -1504,7 +1532,7 @@ | ||||||
|      } |      } | ||||||
|   |   | ||||||
|      get newTabButton() { |      get newTabButton() { | ||||||
| @@ -145,7 +136,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|      } |      } | ||||||
|   |   | ||||||
|      get verticalMode() { |      get verticalMode() { | ||||||
| @@ -1537,29 +1565,41 @@ | @@ -1524,29 +1552,41 @@ | ||||||
|        if (this.#allTabs) { |        if (this.#allTabs) { | ||||||
|          return this.#allTabs; |          return this.#allTabs; | ||||||
|        } |        } | ||||||
| @@ -195,7 +186,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|      } |      } | ||||||
|   |   | ||||||
|      /** |      /** | ||||||
| @@ -1579,7 +1619,7 @@ | @@ -1566,7 +1606,7 @@ | ||||||
|       */ |       */ | ||||||
|      get visibleTabs() { |      get visibleTabs() { | ||||||
|        if (!this.#visibleTabs) { |        if (!this.#visibleTabs) { | ||||||
| @@ -204,20 +195,23 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|        } |        } | ||||||
|        return this.#visibleTabs; |        return this.#visibleTabs; | ||||||
|      } |      } | ||||||
| @@ -1613,10 +1653,8 @@ | @@ -1601,13 +1641,11 @@ | ||||||
|          return this.#focusableItems; |  | ||||||
|        } |        } | ||||||
|   |   | ||||||
|  |        let elementIndex = 0; | ||||||
| -      let verticalPinnedTabsContainer = document.getElementById( | -      let verticalPinnedTabsContainer = document.getElementById( | ||||||
| -        "vertical-pinned-tabs-container" | -        "vertical-pinned-tabs-container" | ||||||
| -      ); | -      ); | ||||||
|  | +      let verticalPinnedTabsContainer = this.verticalPinnedTabsContainer | ||||||
|  |        for (let i = 0; i < verticalPinnedTabsContainer.childElementCount; i++) { | ||||||
|  |          verticalPinnedTabsContainer.children[i].elementIndex = elementIndex++; | ||||||
|  |        } | ||||||
| -      let children = Array.from(this.arrowScrollbox.children); | -      let children = Array.from(this.arrowScrollbox.children); | ||||||
| +      let verticalPinnedTabsContainer = this.verticalPinnedTabsContainer; |  | ||||||
| +      let children = ZenWorkspaces.tabboxChildrenWithoutEmpty; | +      let children = ZenWorkspaces.tabboxChildrenWithoutEmpty; | ||||||
|   |   | ||||||
|        let focusableItems = []; |        let focusableItems = []; | ||||||
|        for (let child of children) { |        for (let child of children) { | ||||||
| @@ -1632,6 +1670,7 @@ | @@ -1628,6 +1666,7 @@ | ||||||
|        } |        } | ||||||
|   |   | ||||||
|        this.#focusableItems = [ |        this.#focusableItems = [ | ||||||
| @@ -225,7 +219,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|          ...verticalPinnedTabsContainer.children, |          ...verticalPinnedTabsContainer.children, | ||||||
|          ...focusableItems, |          ...focusableItems, | ||||||
|        ]; |        ]; | ||||||
| @@ -1642,6 +1681,7 @@ | @@ -1638,6 +1677,7 @@ | ||||||
|      _invalidateCachedTabs() { |      _invalidateCachedTabs() { | ||||||
|        this.#allTabs = null; |        this.#allTabs = null; | ||||||
|        this._invalidateCachedVisibleTabs(); |        this._invalidateCachedVisibleTabs(); | ||||||
| @@ -233,7 +227,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|      } |      } | ||||||
|   |   | ||||||
|      _invalidateCachedVisibleTabs() { |      _invalidateCachedVisibleTabs() { | ||||||
| @@ -1656,8 +1696,8 @@ | @@ -1652,8 +1692,8 @@ | ||||||
|      #isContainerVerticalPinnedExpanded(tab) { |      #isContainerVerticalPinnedExpanded(tab) { | ||||||
|        return ( |        return ( | ||||||
|          this.verticalMode && |          this.verticalMode && | ||||||
| @@ -244,7 +238,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|        ); |        ); | ||||||
|      } |      } | ||||||
|   |   | ||||||
| @@ -1672,7 +1712,7 @@ | @@ -1668,7 +1708,7 @@ | ||||||
|   |   | ||||||
|        if (node == null) { |        if (node == null) { | ||||||
|          // We have a container for non-tab elements at the end of the scrollbox. |          // We have a container for non-tab elements at the end of the scrollbox. | ||||||
| @@ -253,7 +247,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|        } |        } | ||||||
|   |   | ||||||
|        node.before(tab); |        node.before(tab); | ||||||
| @@ -1772,7 +1812,7 @@ | @@ -1763,7 +1803,7 @@ | ||||||
|            // There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and |            // There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and | ||||||
|            // for when the tab strip is overflowed (which is shared by vertical and horizontal tabs); |            // for when the tab strip is overflowed (which is shared by vertical and horizontal tabs); | ||||||
|            // Attach the long click popup to all of them. |            // Attach the long click popup to all of them. | ||||||
| @@ -262,7 +256,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|            const newTab2 = this.newTabButton; |            const newTab2 = this.newTabButton; | ||||||
|            const newTabVertical = document.getElementById( |            const newTabVertical = document.getElementById( | ||||||
|              "vertical-tabs-newtab-button" |              "vertical-tabs-newtab-button" | ||||||
| @@ -1855,7 +1895,7 @@ | @@ -1846,7 +1886,7 @@ | ||||||
|            let rect = ele => { |            let rect = ele => { | ||||||
|              return window.windowUtils.getBoundsWithoutFlushing(ele); |              return window.windowUtils.getBoundsWithoutFlushing(ele); | ||||||
|            }; |            }; | ||||||
| @@ -271,7 +265,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|            if (tab && rect(tab).width <= this._tabClipWidth) { |            if (tab && rect(tab).width <= this._tabClipWidth) { | ||||||
|              this.setAttribute("closebuttons", "activetab"); |              this.setAttribute("closebuttons", "activetab"); | ||||||
|            } else { |            } else { | ||||||
| @@ -1867,10 +1907,12 @@ | @@ -1858,10 +1898,12 @@ | ||||||
|   |   | ||||||
|      _handleTabSelect(aInstant) { |      _handleTabSelect(aInstant) { | ||||||
|        let selectedTab = this.selectedItem; |        let selectedTab = this.selectedItem; | ||||||
| @@ -284,7 +278,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|        selectedTab._notselectedsinceload = false; |        selectedTab._notselectedsinceload = false; | ||||||
|      } |      } | ||||||
|   |   | ||||||
| @@ -1882,7 +1924,7 @@ | @@ -1873,7 +1915,7 @@ | ||||||
|          return; |          return; | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -293,7 +287,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|        if (!tabs.length) { |        if (!tabs.length) { | ||||||
|          return; |          return; | ||||||
|        } |        } | ||||||
| @@ -1918,7 +1960,7 @@ | @@ -1909,7 +1951,7 @@ | ||||||
|          if (isEndTab && !this._hasTabTempMaxWidth) { |          if (isEndTab && !this._hasTabTempMaxWidth) { | ||||||
|            return; |            return; | ||||||
|          } |          } | ||||||
| @@ -302,7 +296,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|          // Force tabs to stay the same width, unless we're closing the last tab, |          // Force tabs to stay the same width, unless we're closing the last tab, | ||||||
|          // which case we need to let them expand just enough so that the overall |          // which case we need to let them expand just enough so that the overall | ||||||
|          // tabbar width is the same. |          // tabbar width is the same. | ||||||
| @@ -1933,7 +1975,7 @@ | @@ -1924,7 +1966,7 @@ | ||||||
|          let tabsToReset = []; |          let tabsToReset = []; | ||||||
|          for (let i = numPinned; i < tabs.length; i++) { |          for (let i = numPinned; i < tabs.length; i++) { | ||||||
|            let tab = tabs[i]; |            let tab = tabs[i]; | ||||||
| @@ -311,7 +305,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|            if (!isEndTab) { |            if (!isEndTab) { | ||||||
|              // keep tabs the same width |              // keep tabs the same width | ||||||
|              tab.style.transition = "none"; |              tab.style.transition = "none"; | ||||||
| @@ -1999,16 +2041,15 @@ | @@ -1990,16 +2032,15 @@ | ||||||
|        // Move pinned tabs to another container when the tabstrip is toggled to vertical |        // Move pinned tabs to another container when the tabstrip is toggled to vertical | ||||||
|        // and when session restore code calls _positionPinnedTabs; update styling whenever |        // and when session restore code calls _positionPinnedTabs; update styling whenever | ||||||
|        // the number of pinned tabs changes. |        // the number of pinned tabs changes. | ||||||
| @@ -334,7 +328,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|          } |          } | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -2016,9 +2057,7 @@ | @@ -2007,9 +2048,7 @@ | ||||||
|      } |      } | ||||||
|   |   | ||||||
|      _resetVerticalPinnedTabs() { |      _resetVerticalPinnedTabs() { | ||||||
| @@ -345,7 +339,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|   |   | ||||||
|        if (!verticalTabsContainer.children.length) { |        if (!verticalTabsContainer.children.length) { | ||||||
|          return; |          return; | ||||||
| @@ -2031,8 +2070,8 @@ | @@ -2022,8 +2061,8 @@ | ||||||
|      } |      } | ||||||
|   |   | ||||||
|      _positionPinnedTabs() { |      _positionPinnedTabs() { | ||||||
| @@ -356,7 +350,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|        let absPositionHorizontalTabs = |        let absPositionHorizontalTabs = | ||||||
|          this.overflowing && tabs.length > numPinned && numPinned > 0; |          this.overflowing && tabs.length > numPinned && numPinned > 0; | ||||||
|   |   | ||||||
| @@ -2041,7 +2080,7 @@ | @@ -2032,7 +2071,7 @@ | ||||||
|   |   | ||||||
|        if (this.verticalMode) { |        if (this.verticalMode) { | ||||||
|          this._updateVerticalPinnedTabs(); |          this._updateVerticalPinnedTabs(); | ||||||
| @@ -365,7 +359,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|          let layoutData = this._pinnedTabsLayoutCache; |          let layoutData = this._pinnedTabsLayoutCache; | ||||||
|          let uiDensity = document.documentElement.getAttribute("uidensity"); |          let uiDensity = document.documentElement.getAttribute("uidensity"); | ||||||
|          if (!layoutData || layoutData.uiDensity != uiDensity) { |          if (!layoutData || layoutData.uiDensity != uiDensity) { | ||||||
| @@ -2113,7 +2152,7 @@ | @@ -2104,7 +2143,7 @@ | ||||||
|          return; |          return; | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -374,7 +368,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|   |   | ||||||
|        let directionX = screenX > dragData.animLastScreenX; |        let directionX = screenX > dragData.animLastScreenX; | ||||||
|        let directionY = screenY > dragData.animLastScreenY; |        let directionY = screenY > dragData.animLastScreenY; | ||||||
| @@ -2121,7 +2160,7 @@ | @@ -2112,7 +2151,7 @@ | ||||||
|        dragData.animLastScreenX = screenX; |        dragData.animLastScreenX = screenX; | ||||||
|   |   | ||||||
|        let { width: tabWidth, height: tabHeight } = |        let { width: tabWidth, height: tabHeight } = | ||||||
| @@ -384,18 +378,18 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|        let shiftSizeY = tabHeight; |        let shiftSizeY = tabHeight; | ||||||
|        dragData.tabWidth = tabWidth; |        dragData.tabWidth = tabWidth; | ||||||
| @@ -2296,10 +2335,11 @@ | @@ -2296,10 +2335,11 @@ | ||||||
|        } |        this.#clearDragOverCreateGroupTimer(); | ||||||
|   |   | ||||||
|        let pinned = draggedTab.pinned; |        let isPinned = draggedTab.pinned; | ||||||
| -      let numPinned = gBrowser.pinnedTabCount; | -      let numPinned = gBrowser.pinnedTabCount; | ||||||
| -      let tabs = this.visibleTabs.slice( | -      let tabs = this.ariaFocusableItems.slice( | ||||||
| -        pinned ? 0 : numPinned, | -        isPinned ? 0 : numPinned, | ||||||
| -        pinned ? numPinned : undefined | -        isPinned ? numPinned : undefined | ||||||
| +      let numPinned = gBrowser._numVisiblePinTabs; | +      let numPinned = gBrowser._numVisiblePinTabs; | ||||||
| +      let essential = draggedTab.hasAttribute("zen-essential"); | +      let essential = draggedTab.hasAttribute("zen-essential"); | ||||||
| +      let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice( | +      let tabs = this.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice( | ||||||
| +        pinned ? (essential ? 0 : gBrowser._numZenVisibleEssentials) : numPinned, | +        isPinned ? (essential ? 0 : gBrowser._numZenVisibleEssentials) : numPinned, | ||||||
| +        pinned ? (essential ? gBrowser._numZenVisibleEssentials : numPinned) : undefined | +        isPinned ? (essential ? gBrowser._numZenVisibleEssentials : numPinned) : undefined | ||||||
|        ); |        ); | ||||||
|   |   | ||||||
|        if (this.#rtlMode) { |        if (this.#rtlMode) { | ||||||
| @@ -412,25 +406,28 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|        } |        } | ||||||
|   |   | ||||||
|        dragData.translatePos = translate; |        dragData.translatePos = translate; | ||||||
| @@ -2484,12 +2528,16 @@ | @@ -2639,7 +2683,7 @@ | ||||||
|        // Shift background tabs to leave a gap where the dragged tab |        // Shift background tabs to leave a gap where the dragged tab | ||||||
|        // would currently be dropped. |        // would currently be dropped. | ||||||
|        for (let tab of tabs) { |        for (let item of tabs) { | ||||||
| -        if (tab == draggedTab) { | -        if (item == draggedTab) { | ||||||
| +        if (tab == draggedTab || (tab.group?.hasAttribute("split-view-group") && tab.group == draggedTab.group)) { | +        if (item == draggedTab || (item.group?.hasAttribute("split-view-group") && item.group == draggedTab.group)) { | ||||||
|            continue; |            continue; | ||||||
|          } |          } | ||||||
|          let shift = getTabShift(tab, newIndex); |   | ||||||
|          let transform = shift ? `${translateAxis}(${shift}px)` : ""; | @@ -2649,7 +2693,11 @@ | ||||||
| +        if (tab.group?.hasAttribute("split-view-group")) { |            // Shift the `.tab-group-label-container` to shift the label element. | ||||||
| +          tab.group.style.transform = transform; |            item = item.parentElement; | ||||||
|  |          } | ||||||
|  | +        if (item.group?.hasAttribute("split-view-group")) { | ||||||
|  | +          item.group.style.transform = transform; | ||||||
| +        } else { | +        } else { | ||||||
|          tab.style.transform = transform; |          item.style.transform = transform; | ||||||
| +        } | +        } | ||||||
|          if (tab.group?.tabs[0] == tab) { |        } | ||||||
|            tab.group.style.setProperty( |      } | ||||||
|              "--tabgroup-dragover-transform", |   | ||||||
| @@ -2541,8 +2589,9 @@ | @@ -2697,8 +2745,9 @@ | ||||||
|        ); |        ); | ||||||
|      } |      } | ||||||
|   |   | ||||||
| @@ -442,16 +439,8 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|          return; |          return; | ||||||
|        } |        } | ||||||
|   |   | ||||||
| @@ -2553,6 +2602,7 @@ | @@ -2754,7 +2803,7 @@ | ||||||
|          tab.style.transform = ""; |          let postTransitionCleanup = () => { | ||||||
|          if (tab.group) { |  | ||||||
|            tab.group.style.removeProperty("--tabgroup-dragover-transform"); |  | ||||||
| +          tab.group.style.transform = ""; |  | ||||||
|          } |  | ||||||
|          tab.removeAttribute("dragover-createGroup"); |  | ||||||
|        } |  | ||||||
| @@ -2604,7 +2654,7 @@ |  | ||||||
|            movingTab._moveTogetherSelectedTabsData.newIndex = movingTabNewIndex; |  | ||||||
|            movingTab._moveTogetherSelectedTabsData.animate = false; |            movingTab._moveTogetherSelectedTabsData.animate = false; | ||||||
|          }; |          }; | ||||||
| -        if (gReduceMotion) { | -        if (gReduceMotion) { | ||||||
| @@ -459,19 +448,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..13a870629a98304cb18dc09b5ae075d7 | |||||||
|            postTransitionCleanup(); |            postTransitionCleanup(); | ||||||
|          } else { |          } else { | ||||||
|            let onTransitionEnd = transitionendEvent => { |            let onTransitionEnd = transitionendEvent => { | ||||||
| @@ -2707,9 +2757,9 @@ | @@ -2924,7 +2973,7 @@ | ||||||
|        function newIndex(aTab, index) { |  | ||||||
|          // Don't allow mixing pinned and unpinned tabs. |  | ||||||
|          if (aTab.pinned) { |  | ||||||
| -          return Math.min(index, gBrowser.pinnedTabCount - 1); |  | ||||||
| +          return Math.min(index, gBrowser._numVisiblePinTabs - 1); |  | ||||||
|          } |  | ||||||
| -        return Math.max(index, gBrowser.pinnedTabCount); |  | ||||||
| +        return Math.max(index, gBrowser._numVisiblePinTabs); |  | ||||||
|        } |  | ||||||
|      } |  | ||||||
|   |  | ||||||
| @@ -2793,7 +2843,7 @@ |  | ||||||
|      } |      } | ||||||
|   |   | ||||||
|      _notifyBackgroundTab(aTab) { |      _notifyBackgroundTab(aTab) { | ||||||
|   | |||||||
| @@ -0,0 +1,13 @@ | |||||||
|  | diff --git a/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx b/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx | ||||||
|  | index dcf192d0ab7323d69f1bf505971e57c98ad4397d..a4d88304786af35030391f71bc99eee6cf7c1a64 100644 | ||||||
|  | --- a/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx | ||||||
|  | +++ b/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx | ||||||
|  | @@ -188,7 +188,7 @@ export class ContentSection extends React.PureComponent { | ||||||
|  |                          data-l10n-args='{"num": 4}' | ||||||
|  |                        /> | ||||||
|  |                      </select> | ||||||
|  | -                    {mayHaveSponsoredTopSites && ( | ||||||
|  | +                    {false && ( | ||||||
|  |                        <div className="check-wrapper" role="presentation"> | ||||||
|  |                          <input | ||||||
|  |                            id="sponsored-shortcuts" | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| diff --git a/browser/components/newtab/lib/AboutPreferences.sys.mjs b/browser/components/newtab/lib/AboutPreferences.sys.mjs | diff --git a/browser/extensions/newtab/lib/AboutPreferences.sys.mjs b/browser/extensions/newtab/lib/AboutPreferences.sys.mjs | ||||||
| index 33f7ecdaeb7074c7633dd229a4446f2a8ed4b247..f422a9bfb9694b190e84e81a430a509b4ab8c986 100644 | index df9d63c2713b4237d8acca93f108d5c788caed8d..a80cc02fdec6e1056d26a6b5a1cdc1a602e5cf2a 100644 | ||||||
| --- a/browser/components/newtab/lib/AboutPreferences.sys.mjs | --- a/browser/extensions/newtab/lib/AboutPreferences.sys.mjs | ||||||
| +++ b/browser/components/newtab/lib/AboutPreferences.sys.mjs | +++ b/browser/extensions/newtab/lib/AboutPreferences.sys.mjs | ||||||
| @@ -34,7 +34,7 @@ const PREFS_BEFORE_SECTIONS = () => [ | @@ -34,7 +34,7 @@ const PREFS_BEFORE_SECTIONS = () => [ | ||||||
|        titleString: "home-prefs-shortcuts-header", |        titleString: "home-prefs-shortcuts-header", | ||||||
|        descString: "home-prefs-shortcuts-description", |        descString: "home-prefs-shortcuts-description", | ||||||
| @@ -0,0 +1,13 @@ | |||||||
|  | diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs | ||||||
|  | index b3d89213ec27151f05e9990d5a55c6e81ce3655f..3c485f616fa2daba62aacbdde2dfb3122e244821 100644 | ||||||
|  | --- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs | ||||||
|  | +++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs | ||||||
|  | @@ -214,7 +214,7 @@ export const PREFS_CONFIG = new Map([ | ||||||
|  |      "showSponsoredTopSites", | ||||||
|  |      { | ||||||
|  |        title: "Show sponsored top sites", | ||||||
|  | -      value: true, | ||||||
|  | +      value: false, | ||||||
|  |      }, | ||||||
|  |    ], | ||||||
|  |    [ | ||||||
							
								
								
									
										24
									
								
								src/browser/modules/BrowserDOMWindow-sys-mjs.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/browser/modules/BrowserDOMWindow-sys-mjs.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | diff --git a/browser/modules/BrowserDOMWindow.sys.mjs b/browser/modules/BrowserDOMWindow.sys.mjs | ||||||
|  | index 2bc4918c15b5ea80e486db66d20bb9668b9e29c0..3800a3807f11c5f65ce0d602a775f95037f5dcf8 100644 | ||||||
|  | --- a/browser/modules/BrowserDOMWindow.sys.mjs | ||||||
|  | +++ b/browser/modules/BrowserDOMWindow.sys.mjs | ||||||
|  | @@ -362,7 +362,7 @@ export class BrowserDOMWindow { | ||||||
|  |      // Passing a null-URI to only create the content window, | ||||||
|  |      // and pass true for aSkipLoad to prevent loading of | ||||||
|  |      // about:blank | ||||||
|  | -    return this.getContentWindowOrOpenURIInFrame( | ||||||
|  | +    let res = this.getContentWindowOrOpenURIInFrame( | ||||||
|  |        null, | ||||||
|  |        aParams, | ||||||
|  |        aWhere, | ||||||
|  | @@ -370,6 +370,10 @@ export class BrowserDOMWindow { | ||||||
|  |        aName, | ||||||
|  |        true | ||||||
|  |      ); | ||||||
|  | +    if (typeof this.win?.gZenGlanceManager !== "undefined" && this.win.toolbar.visible) { | ||||||
|  | +      this.win.gZenGlanceManager.onTabOpen(res, aURI); | ||||||
|  | +    } | ||||||
|  | +    return res; | ||||||
|  |    } | ||||||
|  |   | ||||||
|  |    openURIInFrame(aURI, aParams, aWhere, aFlags, aName) { | ||||||
| @@ -1,37 +0,0 @@ | |||||||
| diff --git a/browser/themes/addons/dark/manifest.json b/browser/themes/addons/dark/manifest.json |  | ||||||
| index bfebde683d00b0acf26509139a0f662029d37c72..976b553f49e40b7ed02743d79ccc102fccffcf6f 100644 |  | ||||||
| --- a/browser/themes/addons/dark/manifest.json |  | ||||||
| +++ b/browser/themes/addons/dark/manifest.json |  | ||||||
| @@ -7,10 +7,10 @@ |  | ||||||
|      } |  | ||||||
|    }, |  | ||||||
|   |  | ||||||
| -  "name": "Dark", |  | ||||||
| +  "name": "Zen Dark", |  | ||||||
|    "description": "A theme with a dark color scheme.", |  | ||||||
| -  "author": "Mozilla", |  | ||||||
| +  "author": "Zen", |  | ||||||
|    "version": "1.3.2", |  | ||||||
|   |  | ||||||
|    "icons": { "32": "icon.svg" }, |  | ||||||
|   |  | ||||||
| @@ -58,7 +58,8 @@ |  | ||||||
|        "color_scheme": "dark", |  | ||||||
|        "panel_active": "color-mix(in srgb, currentColor 14%, transparent)", |  | ||||||
|        "toolbar_field_icon_opacity": "1", |  | ||||||
| -      "zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)" |  | ||||||
| +      "zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)", |  | ||||||
| +      "zen_main_browser_background": "var(--zen-themed-toolbar-bg)" |  | ||||||
|      } |  | ||||||
|    }, |  | ||||||
|   |  | ||||||
| @@ -82,7 +83,8 @@ |  | ||||||
|      "properties": { |  | ||||||
|        "panel_active": "--arrowpanel-dimmed-further", |  | ||||||
|        "toolbar_field_icon_opacity": "--urlbar-icon-fill-opacity", |  | ||||||
| -      "zap_gradient": "--panel-separator-zap-gradient" |  | ||||||
| +      "zap_gradient": "--panel-separator-zap-gradient", |  | ||||||
| +      "zen_main_browser_background": "--zen-main-browser-background" |  | ||||||
|      } |  | ||||||
|    } |  | ||||||
|  } |  | ||||||
| @@ -1,37 +0,0 @@ | |||||||
| diff --git a/browser/themes/addons/light/manifest.json b/browser/themes/addons/light/manifest.json |  | ||||||
| index d490f8f08d203ded55b65fe1a19be105b61ee6c0..eb4349e939b979b3a4d7c525ee0c0f9a53079d4a 100644 |  | ||||||
| --- a/browser/themes/addons/light/manifest.json |  | ||||||
| +++ b/browser/themes/addons/light/manifest.json |  | ||||||
| @@ -7,10 +7,10 @@ |  | ||||||
|      } |  | ||||||
|    }, |  | ||||||
|   |  | ||||||
| -  "name": "Light", |  | ||||||
| +  "name": "Zen Light", |  | ||||||
|    "description": "A theme with a light color scheme.", |  | ||||||
| -  "author": "Mozilla", |  | ||||||
| +  "author": "Zen", |  | ||||||
|    "version": "1.3", |  | ||||||
|   |  | ||||||
|    "icons": { "32": "icon.svg" }, |  | ||||||
|   |  | ||||||
| @@ -59,7 +59,8 @@ |  | ||||||
|        "panel_active": "color-mix(in srgb, currentColor 20%, transparent)", |  | ||||||
|        "panel_active_darker": "color-mix(in srgb, currentColor 27%, transparent)", |  | ||||||
|        "toolbar_field_icon_opacity": "0.72", |  | ||||||
| -      "zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)" |  | ||||||
| +      "zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)", |  | ||||||
| +      "zen_main_browser_background": "var(--zen-themed-toolbar-bg)" |  | ||||||
|      } |  | ||||||
|    }, |  | ||||||
|   |  | ||||||
| @@ -86,7 +87,8 @@ |  | ||||||
|        "panel_active": "--arrowpanel-dimmed-further", |  | ||||||
|        "panel_active_darker": "--panel-item-active-bgcolor", |  | ||||||
|        "toolbar_field_icon_opacity": "--urlbar-icon-fill-opacity", |  | ||||||
| -      "zap_gradient": "--panel-separator-zap-gradient" |  | ||||||
| +      "zap_gradient": "--panel-separator-zap-gradient", |  | ||||||
| +      "zen_main_browser_background": "--zen-main-browser-background" |  | ||||||
|      } |  | ||||||
|    } |  | ||||||
|  } |  | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css | diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css | ||||||
| index dc95772553ef7130c27c1122178ff99028b601f2..81f7dbb40c35168376ca84eebfa9fba8d314cb90 100644 | index 5c9891e5ed4b865ed4ecc98d794a239b0f96a8f9..e13bf7277edeb49ebbb12cf9359ac6193bb47ebd 100644 | ||||||
| --- a/browser/themes/linux/browser.css | --- a/browser/themes/linux/browser.css | ||||||
| +++ b/browser/themes/linux/browser.css | +++ b/browser/themes/linux/browser.css | ||||||
| @@ -42,21 +42,25 @@ | @@ -42,21 +42,25 @@ | ||||||
| @@ -17,7 +17,7 @@ index dc95772553ef7130c27c1122178ff99028b601f2..81f7dbb40c35168376ca84eebfa9fba8 | |||||||
|      } |      } | ||||||
|   |   | ||||||
|      /* stylelint-disable-next-line media-query-no-invalid */ |      /* stylelint-disable-next-line media-query-no-invalid */ | ||||||
|      @media (-moz-bool-pref: "widget.gtk.rounded-bottom-corners.enabled") { |      @media -moz-pref("widget.gtk.rounded-bottom-corners.enabled") { | ||||||
| -      #navigator-toolbox { | -      #navigator-toolbox { | ||||||
| +      #zen-main-app-wrapper { | +      #zen-main-app-wrapper { | ||||||
|          /* The body clip below covers this. */ |          /* The body clip below covers this. */ | ||||||
|   | |||||||
| @@ -1,17 +1,24 @@ | |||||||
| diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml | diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml | ||||||
| index a9863858f9a28b2c633edd9689d4379203eef1e6..7ac24baf70727a2a9be428c6f98763f312a0969b 100644 | index 85974462e5ce2b7dbf85bd5c79f09b3db5c25915..428a245cdf58d959256aa3c975687f31aed16b05 100644 | ||||||
| --- a/modules/libpref/init/StaticPrefList.yaml | --- a/modules/libpref/init/StaticPrefList.yaml | ||||||
| +++ b/modules/libpref/init/StaticPrefList.yaml | +++ b/modules/libpref/init/StaticPrefList.yaml | ||||||
| @@ -18305,7 +18305,7 @@ | @@ -18462,13 +18462,13 @@ | ||||||
|  # Whether we use the mica backdrop. Off by default for now. |  # Whether we use the mica backdrop. Off by default for now. | ||||||
|  - name: widget.windows.mica |  - name: widget.windows.mica | ||||||
|    type: bool |    type: bool | ||||||
| -  value: false | -  value: false | ||||||
| +  value: true | +  value: true | ||||||
|    mirror: once |    mirror: always | ||||||
|  #endif |  | ||||||
|   |   | ||||||
| @@ -18418,6 +18418,26 @@ |  # Whether we use the mica backdrop for popups. Off by default for now. | ||||||
|  |  - name: widget.windows.mica.popups | ||||||
|  |    type: RelaxedAtomicBool | ||||||
|  | -  value: false | ||||||
|  | +  value: true | ||||||
|  |    mirror: always | ||||||
|  |   | ||||||
|  |  # Whether we expand the client area into the taskbar hidden edge on maximized | ||||||
|  | @@ -18594,6 +18594,26 @@ | ||||||
|    mirror: always |    mirror: always | ||||||
|  #endif |  #endif | ||||||
|   |   | ||||||
|   | |||||||
| @@ -22,25 +22,6 @@ index 648c65a9c21dc0e670b50c82cbfb237a68a951d9..ba20bfdd8e6b9cc985977d06e166147e | |||||||
|  |  | ||||||
|      @media (prefers-contrast) { |      @media (prefers-contrast) { | ||||||
|        --panel-border-color: color-mix(in srgb, currentColor 60%, transparent); |        --panel-border-color: color-mix(in srgb, currentColor 60%, transparent); | ||||||
| @@ -49,18 +47,6 @@ panel { |  | ||||||
|      --panel-border-radius: 0px !important; |  | ||||||
|    } |  | ||||||
|   |  | ||||||
| -  @media (-moz-platform: macos) { |  | ||||||
| -    appearance: auto; |  | ||||||
| -    -moz-default-appearance: menupopup; |  | ||||||
| -    /* We set the default background here, rather than on ::part(content), |  | ||||||
| -     * because otherwise it'd interfere with the native look. Non-native-looking |  | ||||||
| -     * popups should get their background via --panel-background */ |  | ||||||
| -    background-color: Menu; |  | ||||||
| -    --panel-background: none; |  | ||||||
| -    --panel-border-color: transparent; |  | ||||||
| -    /* This should be kept in sync with GetMenuMaskImage() */ |  | ||||||
| -    --panel-border-radius: 6px; |  | ||||||
| -  } |  | ||||||
|   |  | ||||||
|    &::part(content) { |  | ||||||
|      display: flex; |  | ||||||
| @@ -198,7 +184,6 @@ panel:where([type="arrow"]) { | @@ -198,7 +184,6 @@ panel:where([type="arrow"]) { | ||||||
|      } |      } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								src/widget/windows/WinUtils-cpp.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/widget/windows/WinUtils-cpp.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | diff --git a/widget/windows/WinUtils.cpp b/widget/windows/WinUtils.cpp | ||||||
|  | index 598c96cbb5cd06a986a5793ebe9c5438d419d4a9..de1317749e6a6dd7df644818970d7706a51e6c14 100644 | ||||||
|  | --- a/widget/windows/WinUtils.cpp | ||||||
|  | +++ b/widget/windows/WinUtils.cpp | ||||||
|  | @@ -2007,6 +2007,7 @@ bool WinUtils::GetTimezoneName(wchar_t* aBuffer) { | ||||||
|  |  static constexpr nsLiteralCString kMicaPrefs[] = { | ||||||
|  |      "widget.windows.mica"_ns, | ||||||
|  |      "widget.windows.mica.popups"_ns, | ||||||
|  | +    "zen.widget.windows.acrylic"_ns, | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  |  static BOOL CALLBACK UpdateMicaInHwnd(HWND aHwnd, LPARAM aLParam) { | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp | diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp | ||||||
| index 209fa7536df662e24bc6739b7ac9f911fba70ff0..321bb19cf7996a4632110e0099585d7e4ca4ca8a 100644 | index d2863d5fd9ce5cedc88253a07cb061a660d42e61..28e63f8bb0b6c8d3b5655b285ea1040ea426616d 100644 | ||||||
| --- a/widget/windows/nsWindow.cpp | --- a/widget/windows/nsWindow.cpp | ||||||
| +++ b/widget/windows/nsWindow.cpp | +++ b/widget/windows/nsWindow.cpp | ||||||
| @@ -165,6 +165,7 @@ | @@ -165,6 +165,7 @@ | ||||||
| @@ -10,12 +10,12 @@ index 209fa7536df662e24bc6739b7ac9f911fba70ff0..321bb19cf7996a4632110e0099585d7e | |||||||
|  #include "nsNativeAppSupportWin.h" |  #include "nsNativeAppSupportWin.h" | ||||||
|   |   | ||||||
|  #include "nsIGfxInfo.h" |  #include "nsIGfxInfo.h" | ||||||
| @@ -2535,7 +2536,7 @@ void nsWindow::SetMicaBackdrop(bool aEnabled) { | @@ -2546,7 +2547,7 @@ void nsWindow::UpdateMicaBackdrop(bool aForce) { | ||||||
|   |      if (!useBackdrop) { | ||||||
|    // Enable Mica Alt Material if available. |        return DWMSBT_AUTO; | ||||||
|    const DWM_SYSTEMBACKDROP_TYPE type = |      } | ||||||
| -      aEnabled ? DWMSBT_TABBEDWINDOW : DWMSBT_AUTO; | -    return IsPopup() ? DWMSBT_TRANSIENTWINDOW : DWMSBT_TABBEDWINDOW; | ||||||
| +      aEnabled ? (StaticPrefs::zen_widget_windows_acrylic_AtStartup() ? DWMSBT_TRANSIENTWINDOW : DWMSBT_TABBEDWINDOW) : DWMSBT_AUTO; | +    return IsPopup() ? DWMSBT_TRANSIENTWINDOW : (StaticPrefs::zen_widget_windows_acrylic_AtStartup() ? DWMSBT_TRANSIENTWINDOW : DWMSBT_TABBEDWINDOW); | ||||||
|    DwmSetWindowAttribute(mWnd, DWMWA_SYSTEMBACKDROP_TYPE, &type, sizeof type); |    }(); | ||||||
|  } |    ::DwmSetWindowAttribute(mWnd, DWMWA_SYSTEMBACKDROP_TYPE, &backdrop, | ||||||
|   |                            sizeof backdrop); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 mr. M
					mr. M