From 149afdaea4e2523c6d5eb3ba942570b14b095e7c Mon Sep 17 00:00:00 2001 From: jelveh Date: Thu, 16 Jul 2026 22:06:05 -0700 Subject: [PATCH] fix(dashboard): ignore stray pointers and no-op drags - Filter drag pointermove/up/cancel by pointerId so a second finger can't hijack or prematurely end an in-progress reorder. - Only persist a new order when the drop actually changed it, so an accidental long-press or drop-in-place doesn't freeze the default ordering into a custom one. --- src/gui/src/UI/Dashboard/TabApps.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/gui/src/UI/Dashboard/TabApps.js b/src/gui/src/UI/Dashboard/TabApps.js index 7560f8e96..470f0149e 100644 --- a/src/gui/src/UI/Dashboard/TabApps.js +++ b/src/gui/src/UI/Dashboard/TabApps.js @@ -792,8 +792,15 @@ const TabApps = { if ( commit ) { const names = d.$el_window.find('.myapps-page .myapps-tile').toArray() .map(t => t.getAttribute('data-app-name')); - this._apps = this._reorderAppsByNames(names); - this.saveOrder(); + const current = this._apps.map(a => a.name); + // Only persist when the order actually changed, so an accidental + // long-press or drop-in-place doesn't freeze the default ordering. + const changed = names.length !== current.length + || names.some((name, i) => name !== current[i]); + if ( changed ) { + this._apps = this._reorderAppsByNames(names); + this.saveOrder(); + } } const ghost = d.ghost;