mirror of
https://github.com/zen-browser/desktop.git
synced 2025-10-21 17:21:56 +00:00
Merge pull request #1957 from kristijanribaric/feature(pinned-tab-url-reset)-add-setting-and-pinned-tab-base-url-persisting
Feature: Add Pinned Tab Management and URL Reset Functionality 2.0
This commit is contained in:
@@ -112,6 +112,9 @@ pref('zen.tab-unloader.enabled', true);
|
||||
pref('zen.tab-unloader.timeout-minutes', 20);
|
||||
pref('zen.tab-unloader.excluded-urls', "example.com,example.org");
|
||||
|
||||
pref('zen.pinned-tab-manager.reset-pinned-tab-on-close-shortcut', false);
|
||||
pref('zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url', false);
|
||||
|
||||
// Pref to enable the new profiles (TODO: Check this out!)
|
||||
//pref("browser.profiles.enabled", true);
|
||||
|
||||
|
@@ -39,6 +39,7 @@
|
||||
gZenUIManager.init();
|
||||
gZenVerticalTabsManager.init();
|
||||
gZenCompactModeManager.init();
|
||||
gZenPinnedTabManager.init();
|
||||
|
||||
function throttle(f, delay) {
|
||||
let timer = 0;
|
||||
|
@@ -31,6 +31,7 @@
|
||||
<script src="chrome://browser/content/ZenUIManager.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenSidebarManager.mjs"/>
|
||||
<script src="chrome://browser/content/zen-components/ZenTabUnloader.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenPinnedTabManager.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenWorkspaces.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenWorkspacesSync.mjs" />
|
||||
|
@@ -16,6 +16,7 @@
|
||||
content/browser/zen-components/ZenThemeBuilder.mjs (content/zen-components/src/ZenThemeBuilder.mjs)
|
||||
content/browser/zen-components/ZenThemesImporter.mjs (content/zen-components/src/ZenThemesImporter.mjs)
|
||||
content/browser/zen-components/ZenTabUnloader.mjs (content/zen-components/src/ZenTabUnloader.mjs)
|
||||
content/browser/zen-components/ZenPinnedTabManager.mjs (content/zen-components/src/ZenPinnedTabManager.mjs)
|
||||
content/browser/zen-components/ZenCommonUtils.mjs (content/zen-components/src/ZenCommonUtils.mjs)
|
||||
content/browser/zen-components/ZenGradientGenerator.mjs (content/zen-components/src/ZenGradientGenerator.mjs)
|
||||
|
||||
|
@@ -1020,4 +1020,14 @@ Preferences.addAll([
|
||||
type: 'bool',
|
||||
default: false,
|
||||
},
|
||||
{
|
||||
id: 'zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url',
|
||||
type: 'bool',
|
||||
default: true,
|
||||
},
|
||||
{
|
||||
id: 'zen.pinned-tab-manager.close-shortcut-behavior',
|
||||
type: 'string',
|
||||
default: 'switch',
|
||||
},
|
||||
]);
|
||||
|
@@ -48,6 +48,7 @@
|
||||
data-l10n-id="zen-tabs-unloader-enabled"
|
||||
preference="zen.tab-unloader.enabled"/>
|
||||
|
||||
|
||||
<label><html:h2 data-l10n-id="zen-tabs-unloader-unload-delay"/></label>
|
||||
<hbox id="zenTabsUnloadDelayContainer">
|
||||
<description class="description-deemphasized" data-l10n-id="zen-tabs-unloader-unload-delay-description" />
|
||||
@@ -59,6 +60,36 @@
|
||||
</hbox>
|
||||
</groupbox>
|
||||
|
||||
<hbox id="zenPinnedTabsManagerCategory"
|
||||
class="subcategory"
|
||||
hidden="true"
|
||||
data-category="paneZenTabManagement">
|
||||
<html:h1 data-l10n-id="pane-zen-pinned-tab-manager-title"/>
|
||||
</hbox>
|
||||
|
||||
<groupbox id="zenPinnedTabsManagerGroup" data-category="paneZenTabManagement" hidden="true" class="highlighting-group">
|
||||
<label><html:h2 data-l10n-id="zen-pinned-tab-manager-header"/></label>
|
||||
<description class="description-deemphasized" data-l10n-id="zen-pinned-tab-manager-description" />
|
||||
|
||||
<checkbox id="zenPinnedTabRestorePinnedTabsToPinnedUrl"
|
||||
data-l10n-id="zen-pinned-tab-manager-restore-pinned-tabs-to-pinned-url"
|
||||
preference="zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url"/>
|
||||
|
||||
<hbox align="center">
|
||||
<label id="zenPinnedTabCloseShortcutBehaviorLabel" data-l10n-id="zen-pinned-tab-manager-close-shortcut-behavior-label"/>
|
||||
<menulist id="zenPinnedTabCloseShortcutBehavior" preference="zen.pinned-tab-manager.close-shortcut-behavior">
|
||||
<menupopup>
|
||||
<menuitem data-l10n-id="zen-pinned-tab-manager-reset-unload-switch-close-shortcut-option" value="reset-unload-switch"/>
|
||||
<menuitem data-l10n-id="zen-pinned-tab-manager-unload-switch-close-shortcut-option" value="unload-switch"/>
|
||||
<menuitem data-l10n-id="zen-pinned-tab-manager-reset-switch-close-shortcut-option" value="reset-switch"/>
|
||||
<menuitem data-l10n-id="zen-pinned-tab-manager-switch-close-shortcut-option" value="switch"/>
|
||||
<menuitem data-l10n-id="zen-pinned-tab-manager-reset-close-shortcut-option" value="reset"/>
|
||||
<menuitem data-l10n-id="zen-pinned-tab-manager-close-close-shortcut-option" value="close"/>
|
||||
</menupopup>
|
||||
</menulist>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
|
||||
</html:template>
|
||||
|
||||
|
||||
|
@@ -1,13 +1,16 @@
|
||||
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
|
||||
index 26f5671c849d9b0a126d79b07bc7d3d7870826ec..26f80d69a28f1196096e67a0e628a69b5b367727 100644
|
||||
index 26f5671c849d9b0a126d79b07bc7d3d7870826ec..5e356a35639c802fcf6d95d42993d5bd5cda514a 100644
|
||||
--- a/browser/components/sessionstore/TabState.sys.mjs
|
||||
+++ b/browser/components/sessionstore/TabState.sys.mjs
|
||||
@@ -98,6 +98,9 @@ var TabStateInternal = {
|
||||
@@ -98,6 +98,12 @@ var TabStateInternal = {
|
||||
tabData.muteReason = tab.muteReason;
|
||||
}
|
||||
|
||||
+ tabData.zenWorkspace = tab.getAttribute("zen-workspace-id");
|
||||
+ tabData.zenDefaultUserContextId = tab.getAttribute("zenDefaultUserContextId");
|
||||
+ tabData.zenPinnedUrl = tab.getAttribute("zen-pinned-url");
|
||||
+ tabData.zenPinnedTitle = tab.getAttribute("zen-pinned-title");
|
||||
+ tabData.zenPinnedIcon = tab.getAttribute("zen-pinned-icon");
|
||||
+
|
||||
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
index ef857bd81f2cd7c163ecc74ac1cf81a0b63ce838..807eb0c493f15643412b05d8dad81d36d7470155 100644
|
||||
index c89ae2cbb978d6218bd56a059c5ca1e371231607..ab88ba4024bf5d069ef4ca613024f422ad513405 100644
|
||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
@@ -452,11 +452,26 @@
|
||||
@@ -456,11 +456,26 @@
|
||||
return duplicateTabs;
|
||||
},
|
||||
|
||||
@@ -31,7 +31,7 @@ index ef857bd81f2cd7c163ecc74ac1cf81a0b63ce838..807eb0c493f15643412b05d8dad81d36
|
||||
}
|
||||
return i;
|
||||
},
|
||||
@@ -2704,6 +2719,11 @@
|
||||
@@ -2705,6 +2720,11 @@
|
||||
);
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ index ef857bd81f2cd7c163ecc74ac1cf81a0b63ce838..807eb0c493f15643412b05d8dad81d36
|
||||
if (!UserInteraction.running("browser.tabs.opening", window)) {
|
||||
UserInteraction.start("browser.tabs.opening", "initting", window);
|
||||
}
|
||||
@@ -2771,6 +2791,9 @@
|
||||
@@ -2773,6 +2793,9 @@
|
||||
noInitialLabel,
|
||||
skipBackgroundNotify,
|
||||
});
|
||||
@@ -53,7 +53,7 @@ index ef857bd81f2cd7c163ecc74ac1cf81a0b63ce838..807eb0c493f15643412b05d8dad81d36
|
||||
if (insertTab) {
|
||||
// insert the tab into the tab container in the correct position
|
||||
this._insertTabAtIndex(t, {
|
||||
@@ -3248,6 +3271,14 @@
|
||||
@@ -3262,6 +3285,14 @@
|
||||
) {
|
||||
tabWasReused = true;
|
||||
tab = this.selectedTab;
|
||||
@@ -68,7 +68,17 @@ index ef857bd81f2cd7c163ecc74ac1cf81a0b63ce838..807eb0c493f15643412b05d8dad81d36
|
||||
if (!tabData.pinned) {
|
||||
this.unpinTab(tab);
|
||||
} else {
|
||||
@@ -3297,6 +3328,13 @@
|
||||
@@ -3275,6 +3306,9 @@
|
||||
restoreTabsLazily && !select && !tabData.pinned;
|
||||
|
||||
let url = "about:blank";
|
||||
+
|
||||
+ gZenPinnedTabManager.resetPinnedTabData(tabData);
|
||||
+
|
||||
if (tabData.entries?.length) {
|
||||
let activeIndex = (tabData.index || tabData.entries.length) - 1;
|
||||
// Ensure the index is in bounds.
|
||||
@@ -3311,6 +3345,12 @@
|
||||
preferredRemoteType,
|
||||
});
|
||||
|
||||
@@ -78,11 +88,19 @@ index ef857bd81f2cd7c163ecc74ac1cf81a0b63ce838..807eb0c493f15643412b05d8dad81d36
|
||||
+ if (tabData.zenDefaultUserContextId) {
|
||||
+ tab.setAttribute("zenDefaultUserContextId", "true");
|
||||
+ }
|
||||
+
|
||||
if (select) {
|
||||
tabToSelect = tab;
|
||||
}
|
||||
@@ -4184,6 +4222,7 @@
|
||||
@@ -3345,7 +3385,7 @@
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
}
|
||||
}
|
||||
-
|
||||
+ gZenPinnedTabManager.updatePinnedTabForSessionRestore(tabData, tab);
|
||||
tab.initialize();
|
||||
}
|
||||
|
||||
@@ -4198,6 +4238,7 @@
|
||||
isLastTab ||
|
||||
aTab.pinned ||
|
||||
aTab.hidden ||
|
||||
@@ -90,7 +108,7 @@ index ef857bd81f2cd7c163ecc74ac1cf81a0b63ce838..807eb0c493f15643412b05d8dad81d36
|
||||
this._removingTabs.size >
|
||||
3 /* don't want lots of concurrent animations */ ||
|
||||
!aTab.hasAttribute(
|
||||
@@ -5117,10 +5156,10 @@
|
||||
@@ -5131,10 +5172,10 @@
|
||||
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
|
||||
},
|
||||
|
||||
@@ -103,3 +121,12 @@ index ef857bd81f2cd7c163ecc74ac1cf81a0b63ce838..807eb0c493f15643412b05d8dad81d36
|
||||
aTab.selected ||
|
||||
aTab.closing ||
|
||||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
||||
@@ -7870,7 +7911,7 @@ var TabContextMenu = {
|
||||
);
|
||||
contextUnpinSelectedTabs.hidden =
|
||||
!this.contextTab.pinned || !multiselectionContext;
|
||||
-
|
||||
+ gZenPinnedTabManager.updatePinnedTabContextMenu(this.contextTab);
|
||||
// Move Tab items
|
||||
let contextMoveTabOptions = document.getElementById(
|
||||
"context_moveTabOptions"
|
||||
|
@@ -773,7 +773,8 @@ menuitem[id='placesContext_deleteHost'],
|
||||
#context_reloadTab,
|
||||
#context_reloadSelectedTabs,
|
||||
#toolbar-context-reloadSelectedTab,
|
||||
#toolbar-context-reloadSelectedTabs {
|
||||
#toolbar-context-reloadSelectedTabs,
|
||||
#context_zen-reset-pinned-tab {
|
||||
--menu-image: url('reload.svg');
|
||||
}
|
||||
|
||||
@@ -872,7 +873,8 @@ menuitem[contexttype='fullscreen'][label*='Exit'] {
|
||||
#context_unpinTab,
|
||||
#context_pinSelectedTabs,
|
||||
#context_unpinSelectedTabs,
|
||||
.customize-context-moveToPanel {
|
||||
.customize-context-moveToPanel,
|
||||
#context_zen-replace-pinned-url-with-current {
|
||||
--menu-image: url('pin.svg');
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user