From a1c8ba4cdd53480c8414319fca06e0cb09153e38 Mon Sep 17 00:00:00 2001 From: jelveh Date: Sun, 26 Jul 2026 23:29:33 -0700 Subject: [PATCH] Fix stuck grab cursor on aborted drag When dragging is aborted by returning false from the sortable 'start' handler, the cursor plugin never fires its cleanup, leaving the body cursor stuck on 'grabbing'. Reset the body cursor explicitly on each early-return path. --- src/gui/src/UI/Dashboard/TabFiles.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gui/src/UI/Dashboard/TabFiles.js b/src/gui/src/UI/Dashboard/TabFiles.js index f1b3d0f78..af2e86c14 100644 --- a/src/gui/src/UI/Dashboard/TabFiles.js +++ b/src/gui/src/UI/Dashboard/TabFiles.js @@ -2622,13 +2622,20 @@ const TabFiles = { revertDuration: 100, start: function (_event, ui) { + // Returning false from here aborts the drag but skips the + // "stop" plugins, so the cursor plugin never restores the + // body cursor it already set to 'grabbing' — reset it on + // every abort path or the hand cursor sticks. + // Don't start drag if item wasn't already selected before mousedown; // rubberband selection should handle this case instead. if ( ! itemWasSelectedOnMousedown ) { + $('body').css('cursor', ''); return false; } if ( $(el_item).attr('data-immutable') !== '0' ) { + $('body').css('cursor', ''); return false; }