diff --git a/src/zen/drag-and-drop/ZenDragAndDrop.js b/src/zen/drag-and-drop/ZenDragAndDrop.js index 94c6dff3f..75dc2455f 100644 --- a/src/zen/drag-and-drop/ZenDragAndDrop.js +++ b/src/zen/drag-and-drop/ZenDragAndDrop.js @@ -68,6 +68,7 @@ #maxTabsPerRow = 0; #changeSpaceTimer = null; #isAnimatingTabMove = false; + #firstHapticFeedbackPlayed = false; #dragOverSplit = {}; @@ -1150,12 +1151,17 @@ // outside of a valid drop target. ownerGlobal.gZenFolders.highlightGroupOnDragOver(null); this.ZenDragAndDropService.onDragEnd(); - super.handle_dragend(event); + try { + super.handle_dragend(event); + } catch (e) { + console.error(e); + } thisFromGlobal.clearDragOverVisuals(); ownerGlobal.gZenPinnedTabManager.removeTabContainersDragoverClass(); thisFromGlobal._clearDragOverSplit(); this.#maybeClearVerticalPinnedGridDragOver(); thisFromGlobal.originalDragImageArgs = []; + this.#firstHapticFeedbackPlayed = false; window.removeEventListener( "dragenter", thisFromGlobal.handle_windowDragEnter, @@ -1410,6 +1416,12 @@ dropBefore = true; } } + if (shouldPlayHapticFeedback && !this.#firstHapticFeedbackPlayed) { + // The first haptic feedback can often be too annoying, + // so we skip it, but play for subsequent dragovers. + this.#firstHapticFeedbackPlayed = true; + shouldPlayHapticFeedback = false; + } if (shouldPlayHapticFeedback) { // eslint-disable-next-line mozilla/valid-services Services.zen.playHapticFeedback(); diff --git a/src/zen/split-view/ZenViewSplitter.mjs b/src/zen/split-view/ZenViewSplitter.mjs index 37fc8e6cf..50082ed63 100644 --- a/src/zen/split-view/ZenViewSplitter.mjs +++ b/src/zen/split-view/ZenViewSplitter.mjs @@ -231,7 +231,7 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature { } this.removeGroup(groupIndex); if (changeTab) { - gBrowser.selectedTab = remainingTabs[remainingTabs.length - 1]; + gBrowser.selectedTab = remainingTabs[0]; document .getElementById("cmd_zenNewEmptySplit") .removeAttribute("disabled");