fix: Add debounce to toolbar reveal when dragging windows to prevent accidental activation (#1989)
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test (20.x) (push) Has been cancelled
test / test (22.x) (push) Has been cancelled
test / backend (node env, api-test) (22.x) (push) Has been cancelled
test / puterjs (browser env, playwright) (22.x) (push) Has been cancelled
test / puterjs (node env, vitest) (22.x) (push) Has been cancelled

* 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 aaedee0dfa.

* revert commit aaedee0dfa

* use snake case for drag_release_debounce_timer
This commit is contained in:
John Boulanger authored and GitHub committed 2025-11-20 23:52:13 -08:00
1 parent 8dafafa749
commit f6139bc79a
1 file changed
+22 -2
+22 -2
View File
@@ -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