From 96e3cb0451e741033deb14d22f67f696065e9d77 Mon Sep 17 00:00:00 2001 From: Honey Date: Tue, 19 May 2026 19:54:36 +0200 Subject: [PATCH] fix: prevent stacked reorder mode from multiple 'Neu anordnen' clicks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added _reorderCtx.active flag — plReorderEnter bails early if already active, preventing duplicate handles and event listeners from stacking. Co-Authored-By: Claude Sonnet 4.6 --- src/views.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/views.js b/src/views.js index e83f3d6..94dcc7a 100644 --- a/src/views.js +++ b/src/views.js @@ -587,7 +587,8 @@ function _setupReorderMode(container, songs, pl) { } export function plReorderEnter() { - if (!_reorderCtx) return; + if (!_reorderCtx || _reorderCtx.active) return; + _reorderCtx.active = true; const { container, songs } = _reorderCtx; container.classList.add('pl-draggable'); // Block context-menu (long-press) on all items while reordering. @@ -684,6 +685,7 @@ export function plReorderCancel() { _exitReorderMode(false); } function _exitReorderMode(save) { if (!_reorderCtx) return; const { container, songs, pl } = _reorderCtx; + _reorderCtx.active = false; container.classList.remove('pl-draggable'); container.removeEventListener('contextmenu', _blockCtxMenu, true); container.querySelectorAll('.pl-drag-handle').forEach(h => h.remove());