mirror of
https://github.com/zen-browser/desktop.git
synced 2026-04-20 22:35:39 +00:00
fix: Small drag and drop fixes and possible leak fix, b=no-bug, c=mods, split-view, workspaces
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/drag-and-drop.js b/browser/components/tabbrowser/content/drag-and-drop.js
|
||||
index 57800333445ec7850742145527e04ae8d504b0bb..dcee798999a5feafa97b01dcaa473204ee750957 100644
|
||||
index 57800333445ec7850742145527e04ae8d504b0bb..bd94089592ce8912fc1a9c1bdea0caa5775ed460 100644
|
||||
--- a/browser/components/tabbrowser/content/drag-and-drop.js
|
||||
+++ b/browser/components/tabbrowser/content/drag-and-drop.js
|
||||
@@ -35,6 +35,9 @@
|
||||
@@ -81,14 +81,14 @@ index 57800333445ec7850742145527e04ae8d504b0bb..dcee798999a5feafa97b01dcaa473204
|
||||
isTab(draggedTab) &&
|
||||
draggedTab.pinned &&
|
||||
this._tabbrowserTabs.arrowScrollbox.contains(event.target);
|
||||
@@ -387,6 +396,7 @@
|
||||
(oldTranslateY && oldTranslateY != newTranslateY);
|
||||
} else if (this._tabbrowserTabs.verticalMode) {
|
||||
shouldTranslate &&= oldTranslateY && oldTranslateY != newTranslateY;
|
||||
+ shouldTranslate = false;
|
||||
} else {
|
||||
shouldTranslate &&= oldTranslateX && oldTranslateX != newTranslateX;
|
||||
@@ -432,6 +441,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ shouldTranslate = false;
|
||||
if (shouldTranslate) {
|
||||
let translationPromises = [];
|
||||
for (let item of movingTabs) {
|
||||
@@ -443,7 +453,7 @@
|
||||
item.removeAttribute("tabdrop-samewindow");
|
||||
resolve();
|
||||
|
||||
@@ -675,6 +675,7 @@
|
||||
|
||||
handle_drop(event) {
|
||||
this.clearSpaceSwitchTimer();
|
||||
this.#maybeClearVerticalPinnedGridDragOver();
|
||||
super.handle_drop(event);
|
||||
const dt = event.dataTransfer;
|
||||
const activeWorkspace = gZenWorkspaces.activeWorkspace;
|
||||
@@ -885,7 +886,8 @@
|
||||
} else {
|
||||
const numEssentials = gBrowser._numZenEssentials;
|
||||
const numPinned = gBrowser.pinnedTabCount - numEssentials;
|
||||
const tabToUse = event.target.closest(dropZoneSelector);
|
||||
const tabToUse =
|
||||
event.target.closest(dropZoneSelector) || draggedTab._dragData?.dropElement;
|
||||
if (!tabToUse) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include "mozilla/css/SheetParsingMode.h"
|
||||
#include "mozilla/GlobalStyleSheetCache.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
|
||||
#define GET_MODS_FILE(chromeFile, err) \
|
||||
NS_GetSpecialDirectory(NS_APP_USER_CHROME_DIR, getter_AddRefs(chromeFile)); \
|
||||
@@ -57,7 +58,7 @@ auto ZenStyleSheetCache::LoadSheetFile(nsIFile* aFile,
|
||||
return;
|
||||
}
|
||||
|
||||
auto loader = new mozilla::css::Loader;
|
||||
RefPtr<mozilla::css::Loader> loader = new mozilla::css::Loader;
|
||||
auto result = loader->LoadSheetSync(uri, aParsingMode,
|
||||
css::Loader::UseSystemPrincipal::Yes);
|
||||
if (MOZ_UNLIKELY(result.isErr())) {
|
||||
|
||||
@@ -1773,7 +1773,7 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature {
|
||||
if (this.fakeBrowser) {
|
||||
delete this._hasAnimated;
|
||||
this.fakeBrowser.remove();
|
||||
this.fakeBrowser = null;
|
||||
delete this.fakeBrowser;
|
||||
if (select) {
|
||||
gBrowser.selectedTab = this._draggingTab;
|
||||
this._draggingTab = null;
|
||||
@@ -2164,49 +2164,51 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature {
|
||||
gridType: "grid",
|
||||
layoutTree: this.calculateLayoutTree(tabs, "grid"),
|
||||
};
|
||||
this._data.push(data);
|
||||
this.activateSplitView(data);
|
||||
gBrowser.selectedTab = emptyTab;
|
||||
setTimeout(() => {
|
||||
window.addEventListener(
|
||||
"ZenURLBarClosed",
|
||||
(event) => {
|
||||
const { onElementPicked, onSwitch } = event.detail;
|
||||
const groupIndex = this._data.findIndex((group) => group.tabs.includes(emptyTab));
|
||||
const newSelectedTab = gBrowser.selectedTab;
|
||||
const cleanup = () => {
|
||||
this.removeTabFromGroup(emptyTab, groupIndex, {
|
||||
changeTab: !onSwitch,
|
||||
forUnsplit: true,
|
||||
});
|
||||
const command = document.getElementById("cmd_zenNewEmptySplit");
|
||||
command.removeAttribute("disabled");
|
||||
};
|
||||
if (onElementPicked) {
|
||||
if (
|
||||
newSelectedTab === emptyTab ||
|
||||
newSelectedTab === selectedTab ||
|
||||
selectedTab.getAttribute("zen-workspace-id") !==
|
||||
newSelectedTab.getAttribute("zen-workspace-id")
|
||||
) {
|
||||
this.#withoutSplitViewTransition(() => {
|
||||
this._data.push(data);
|
||||
this.activateSplitView(data);
|
||||
gBrowser.selectedTab = emptyTab;
|
||||
setTimeout(() => {
|
||||
window.addEventListener(
|
||||
"ZenURLBarClosed",
|
||||
(event) => {
|
||||
const { onElementPicked, onSwitch } = event.detail;
|
||||
const groupIndex = this._data.findIndex((group) => group.tabs.includes(emptyTab));
|
||||
const newSelectedTab = gBrowser.selectedTab;
|
||||
const cleanup = () => {
|
||||
this.removeTabFromGroup(emptyTab, groupIndex, {
|
||||
changeTab: !onSwitch,
|
||||
forUnsplit: true,
|
||||
});
|
||||
const command = document.getElementById("cmd_zenNewEmptySplit");
|
||||
command.removeAttribute("disabled");
|
||||
};
|
||||
if (onElementPicked) {
|
||||
if (
|
||||
newSelectedTab === emptyTab ||
|
||||
newSelectedTab === selectedTab ||
|
||||
selectedTab.getAttribute("zen-workspace-id") !==
|
||||
newSelectedTab.getAttribute("zen-workspace-id")
|
||||
) {
|
||||
cleanup();
|
||||
return;
|
||||
}
|
||||
this.removeTabFromGroup(emptyTab, groupIndex, { forUnsplit: true });
|
||||
gBrowser.selectedTab = selectedTab;
|
||||
this.resetTabState(emptyTab, false);
|
||||
this.splitTabs(
|
||||
rightSide ? [selectedTab, newSelectedTab] : [newSelectedTab, selectedTab],
|
||||
"grid",
|
||||
rightSide ? 1 : 0
|
||||
);
|
||||
} else {
|
||||
cleanup();
|
||||
return;
|
||||
}
|
||||
this.removeTabFromGroup(emptyTab, groupIndex, { forUnsplit: true });
|
||||
gBrowser.selectedTab = selectedTab;
|
||||
this.resetTabState(emptyTab, false);
|
||||
this.splitTabs(
|
||||
rightSide ? [selectedTab, newSelectedTab] : [newSelectedTab, selectedTab],
|
||||
"grid",
|
||||
rightSide ? 1 : 0
|
||||
);
|
||||
} else {
|
||||
cleanup();
|
||||
}
|
||||
},
|
||||
{ once: true }
|
||||
);
|
||||
gZenUIManager.handleNewTab(false, false, "tab", true);
|
||||
},
|
||||
{ once: true }
|
||||
);
|
||||
gZenUIManager.handleNewTab(false, false, "tab", true);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
}
|
||||
|
||||
:root:not([inDOMFullscreen='true'])
|
||||
.browserSidebarContainer.deck-selected:hover
|
||||
.browserSidebarContainer:hover
|
||||
.zen-view-splitter-header-container,
|
||||
.zen-view-splitter-header-container:hover {
|
||||
pointer-events: all;
|
||||
|
||||
@@ -140,6 +140,9 @@ class nsZenWorkspaces {
|
||||
this._invalidateBookmarkContainers();
|
||||
};
|
||||
Services.obs.addObserver(observerFunction, "workspace-bookmarks-updated");
|
||||
window.addEventListener("unload", () => {
|
||||
Services.obs.removeObserver(observerFunction, "workspace-bookmarks-updated");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user