Allow adding split views with context menu

This commit is contained in:
Mauro Balades
2024-05-18 14:11:19 +02:00
parent 8831cd77b6
commit 3ba496a0e7
6 changed files with 81 additions and 6 deletions

View File

@@ -288,7 +288,7 @@ var gZenBrowserManagerSidebar = {
_createWebPanelBrowser(data) {
const titleContainer = document.getElementById("zen-sidebar-web-panel-title");
titleContainer.textContent = "";
titleContainer.textContent = "Loading...";
let browser = gBrowser.createBrowser({});
browser.setAttribute("disablefullscreen", "true");
browser.setAttribute("src", data.url);

View File

@@ -42,6 +42,9 @@ var gZenViewSplitter = {
}
let dataTab = this._data[index].tabs;
dataTab.splice(dataTab.indexOf(tab), 1);
tab._zenSplitted = false;
tab.linkedBrowser.zenModeActive = false;
tab.linkedBrowser.docShellIsActive = false;
if (dataTab.length < 2) {
this._data.splice(index, 1);
if (this.currentView == index) {
@@ -98,7 +101,7 @@ var gZenViewSplitter = {
return;
}
for (const tab of this._data[this.currentView].tabs) {
tab._zenSplitted = false;
// tab._zenSplitted = false;
let container = tab.linkedBrowser.closest(".browserSidebarContainer");
container.removeAttribute("zen-split-active");
container.classList.remove("deck-selected");
@@ -129,6 +132,25 @@ var gZenViewSplitter = {
}
modifyDecks(splitData.tabs, true);
},
contextSplitTabs() {
let tabs = gBrowser.selectedTabs;
this.splitTabs(tabs);
},
contextCanSplitTabs() {
if (gBrowser.selectedTabs.length < 2) {
return false;
}
// Check if any tab is already split
for (const tab of gBrowser.selectedTabs) {
console.log(tab._zenSplitted);
if (tab._zenSplitted) {
return false;
}
}
return true;
},
};
gZenViewSplitter.init();

View File

@@ -1,8 +1,21 @@
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml
index bff8d98b27819b149a0c51c1195e1ee3668f2e31..622cbe099be0f1da8f48132204b73e577483ceae 100644
index 91b2483c53fe67875d108a3d7c1959411f1d2c8f..1c3f460392a9c6ad4329865f3bf5dd253d84895d 100644
--- a/browser/base/content/main-popupset.inc.xhtml
+++ b/browser/base/content/main-popupset.inc.xhtml
@@ -166,6 +166,10 @@
@@ -77,6 +77,12 @@
data-lazy-l10n-id="tab-context-close-n-tabs"
data-l10n-args='{"tabCount": 1}'
oncommand="TabContextMenu.closeContextTabs();"/>
+ <menuseparator/>
+ <menuitem id="context_zenSplitTabs"
+ data-lazy-l10n-id="tab-zen-split-tabs"
+ data-l10n-args='{"tabCount": 1}'
+ oncommand="gZenViewSplitter.contextSplitTabs();"/>
+ <menuseparator/>
<menu id="context_closeTabOptions"
data-lazy-l10n-id="tab-context-close-multiple-tabs">
<menupopup id="closeTabOptions">
@@ -166,6 +172,10 @@
hidden="true"
tabspecific="true"
aria-labelledby="editBookmarkPanelTitle">
@@ -13,7 +26,7 @@ index bff8d98b27819b149a0c51c1195e1ee3668f2e31..622cbe099be0f1da8f48132204b73e57
<box class="panel-header">
<html:h1>
<html:span id="editBookmarkPanelTitle"/>
@@ -188,12 +192,14 @@
@@ -188,12 +198,14 @@
class="footer-button"
data-l10n-id="bookmark-panel-save-button"
default="true"
@@ -28,7 +41,7 @@ index bff8d98b27819b149a0c51c1195e1ee3668f2e31..622cbe099be0f1da8f48132204b73e57
</panel>
</html:template>
@@ -491,6 +497,8 @@
@@ -507,6 +519,8 @@
#include popup-notifications.inc

View File

@@ -0,0 +1,16 @@
diff --git a/browser/base/content/tabbrowser.js b/browser/base/content/tabbrowser.js
index 3bca0b6d30468dc3a755219723f673ec80dfce6e..200a609ea31a8c904e2d3e39a3a06ff67fb313ed 100644
--- a/browser/base/content/tabbrowser.js
+++ b/browser/base/content/tabbrowser.js
@@ -7623,6 +7623,11 @@ var TabContextMenu = {
this.contextTab.linkedBrowser,
document.getElementById("context_sendTabToDevice")
);
+
+ document
+ .getElementById("context_zenSplitTabs")
+ .setAttribute("data-l10n-args", tabCountInfo);
+ document.getElementById("context_zenSplitTabs").disabled = !gZenViewSplitter.contextCanSplitTabs();
},
handleEvent(aEvent) {

View File

@@ -0,0 +1,19 @@
diff --git a/browser/locales/en-US/browser/tabContextMenu.ftl b/browser/locales/en-US/browser/tabContextMenu.ftl
index df58df794c5e7101aa1ea684edd009532d74240d..0b4237dfde4e8e30e279f0a7022c1a36e67a04e8 100644
--- a/browser/locales/en-US/browser/tabContextMenu.ftl
+++ b/browser/locales/en-US/browser/tabContextMenu.ftl
@@ -101,6 +101,14 @@ tab-context-move-tabs =
}
.accesskey = v
+tab-zen-split-tabs =
+ .label =
+ { $tabCount ->
+ [1] Split Tab (multiple selected tabs needed)
+ *[other] Split { $tabCount } Tabs
+ }
+ .accesskey = S
+
tab-context-send-tabs-to-device =
.label =
{ $tabCount ->

View File

@@ -34,6 +34,11 @@
list-style-image: url("sidebars-right.svg") !important;
}
#context_zenSplitTabs {
/* TODO: Add split view icon */
--menu-image: url("sidebars-right.svg") !important;
}
#sidebar-button:-moz-locale-dir(ltr):not([positionend]),
#sidebar-button:-moz-locale-dir(rtl)[positionend],
#zen-sidepanel-button {