From f6139bc79aa4dd1c08ad0659b540c7f22136bb37 Mon Sep 17 00:00:00 2001 From: John Boulanger <78612961+JohnBoulanger@users.noreply.github.com> Date: Fri, 21 Nov 2025 02:52:13 -0500 Subject: [PATCH] fix: Add debounce to toolbar reveal when dragging windows to prevent accidental activation (#1989) * fix: debounce toolbar display after dragging a window * change naming convention for debounce to match others. (snake case) * revert changes to package.json that werent meant to be comitted * Revert "change naming convention for debounce to match others. (snake case)" This reverts commit aaedee0dfaec3d558ddb56f4dd2a10d11aa0d5b1. * revert commit aaedee0dfaec3d558ddb56f4dd2a10d11aa0d5b1 * use snake case for drag_release_debounce_timer --- src/gui/src/UI/UIDesktop.js | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/gui/src/UI/UIDesktop.js b/src/gui/src/UI/UIDesktop.js index fabbd1cf9..1c7c698ed 100644 --- a/src/gui/src/UI/UIDesktop.js +++ b/src/gui/src/UI/UIDesktop.js @@ -1547,10 +1547,30 @@ async function UIDesktop(options) { }, hideDelay); }; + // debounce timer to prevent toolbar showing immediately after drag ends + window.drag_release_debounce_timer = null; + const DRAG_RELEASE_DEBOUNCE_MS = 300; + + // track when drag operations end to enable debounce + $(document).on('dragend', function() { + window.drag_release_debounce_timer = setTimeout(() => { + window.drag_release_debounce_timer = null; + }, DRAG_RELEASE_DEBOUNCE_MS); + }); + + // also debounce when mouseup occurs while in drag state + $(document).on('mouseup', function() { + if (window.a_window_is_being_dragged || window.an_item_is_being_dragged) { + window.drag_release_debounce_timer = setTimeout(() => { + window.drag_release_debounce_timer = null; + }, DRAG_RELEASE_DEBOUNCE_MS); + } + }); + // hovering over a hidden toolbar will show it $(document).on('mouseenter', '.toolbar-hidden', function () { - // if a window is being dragged, don't show the toolbar - if(window.a_window_is_being_dragged) + // if a window is being dragged or currently in drag release debounce period, don't show the toolbar + if(window.a_window_is_being_dragged || window.drag_release_debounce_timer !== null) return; // if selectable is active , don't show the toolbar