From b92d6976575790ed4a7535054b166e04faf2c617 Mon Sep 17 00:00:00 2001 From: Andrey Bochkarev <50177704+octaviusz@users.noreply.github.com> Date: Wed, 25 Feb 2026 22:37:53 +0300 Subject: [PATCH] fix: Add guard to prevent invalid split drops, p=#12511 --- src/zen/drag-and-drop/ZenDragAndDrop.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/zen/drag-and-drop/ZenDragAndDrop.js b/src/zen/drag-and-drop/ZenDragAndDrop.js index c30d5548d..af2ed7a61 100644 --- a/src/zen/drag-and-drop/ZenDragAndDrop.js +++ b/src/zen/drag-and-drop/ZenDragAndDrop.js @@ -683,6 +683,10 @@ const dt = event.dataTransfer; const draggedTab = dt.mozGetDataAt(TAB_DROP_TYPE, 0); + if (!isTab(draggedTab)) { + return; + } + const dragData = draggedTab._dragData; const movingTabsSet = dragData.movingTabsSet; const dropElement = event.target.closest(".tabbrowser-tab"); @@ -771,6 +775,7 @@ } this.#dragOverSplit.fakeTab = element; + this.#dragOverSplit.canDrop = true; } _clearDragOverSplit() { @@ -782,6 +787,7 @@ this.#dragOverSplit.timer = null; this.#dragOverSplit.fakeTab = null; this.#dragOverSplit.data = null; + this.#dragOverSplit.canDrop = null; } handle_windowDragEnter(event) { @@ -881,6 +887,10 @@ } #handle_dropCreateSplit(event) { + if (!this.#dragOverSplit.canDrop) { + return; + } + const dragData = this.#dragOverSplit.data; const dt = event.dataTransfer; const draggedTab = dt.mozGetDataAt(TAB_DROP_TYPE, 0); @@ -1118,7 +1128,7 @@ // eslint-disable-next-line complexity #applyDragoverIndicator(event, dropElement, movingTabs, draggedTab) { // Doesn't show indicator when dragOverSplit - if (this.#dragOverSplit.data) { + if (this.#dragOverSplit.canDrop) { return; } const separation = 4;