From 82a5314fbd7ee9df6c1843203f319539e4f4a0b3 Mon Sep 17 00:00:00 2001 From: Hetsavani Date: Sun, 14 Dec 2025 16:13:54 +0530 Subject: [PATCH 1/2] Fix sidebar cursor grabbing on click --- src/gui/src/UI/UIWindow.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/gui/src/UI/UIWindow.js b/src/gui/src/UI/UIWindow.js index 1ef2e90478..57420512ef 100644 --- a/src/gui/src/UI/UIWindow.js +++ b/src/gui/src/UI/UIWindow.js @@ -2044,10 +2044,10 @@ async function UIWindow (options) { } } - if ( ! activeZone ) { - hideSnapPlaceholder(); + if ( ! activeZone ) { + hideSnapPlaceholder(); + } } - } }, stop: function () { window.a_window_is_being_dragged = false; @@ -2779,14 +2779,24 @@ async function UIWindow (options) { }).disableSelection(); // Prevent text selection while dragging // Make the sortable operation more responsive + let grabTimeout; $sidebar.on('mousedown', '.window-sidebar-item', function (e) { if ( ! $(this).hasClass('window-sidebar-title') ) { - $(this).addClass('grabbing'); + + grabTimeout = setTimeout(() => { + $(this).addClass('grabbing'); + }, 300); + + $(document).one('mouseup', function () { + clearTimeout(grabTimeout); + $(this).removeClass('grabbing'); + }); } }); $sidebar.on('mouseup mouseleave', '.window-sidebar-item', function () { $(this).removeClass('grabbing'); + clearTimeout(grabTimeout); }); } From 818e8432e59ccd6678cee217b242ead2aa8f46c6 Mon Sep 17 00:00:00 2001 From: Hetsavani Date: Sun, 14 Dec 2025 16:39:25 +0530 Subject: [PATCH 2/2] Final commit --- src/gui/src/UI/UIWindow.js | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/gui/src/UI/UIWindow.js b/src/gui/src/UI/UIWindow.js index 57420512ef..26acaa1301 100644 --- a/src/gui/src/UI/UIWindow.js +++ b/src/gui/src/UI/UIWindow.js @@ -2779,24 +2779,41 @@ async function UIWindow (options) { }).disableSelection(); // Prevent text selection while dragging // Make the sortable operation more responsive - let grabTimeout; $sidebar.on('mousedown', '.window-sidebar-item', function (e) { if ( ! $(this).hasClass('window-sidebar-title') ) { + const $item = $(this); - grabTimeout = setTimeout(() => { - $(this).addClass('grabbing'); + // Clear any existing timeout for this item + const existingTimeout = $item.data('grabTimeout'); + if (existingTimeout) { + clearTimeout(existingTimeout); + } + + const grabTimeout = setTimeout(() => { + $item.addClass('grabbing'); }, 300); + // Store timeout reference on the element + $item.data('grabTimeout', grabTimeout); $(document).one('mouseup', function () { - clearTimeout(grabTimeout); - $(this).removeClass('grabbing'); + const timeout = $item.data('grabTimeout'); + if(timeout){ + clearTimeout(timeout); + $item.removeData('grabTimeout'); + } + $item.removeClass('grabbing'); }); } }); $sidebar.on('mouseup mouseleave', '.window-sidebar-item', function () { - $(this).removeClass('grabbing'); - clearTimeout(grabTimeout); + const $item = $(this); + const timeout = $item.data('grabTimeout'); + if (timeout) { + clearTimeout(timeout); + $item.removeData('grabTimeout'); + } + $item.removeClass('grabbing'); }); }