diff --git a/build-plugin.sh b/build-plugin.sh index 50312ca..a90a3a5 100755 --- a/build-plugin.sh +++ b/build-plugin.sh @@ -2,7 +2,7 @@ set -eu PLUGIN="u-navigator" -VERSION="2026.07.14.r012" +VERSION="2026.07.14.r013" PKG_DIR="packages" WORK_DIR=".plugin-build" PKG_NAME="${PLUGIN}-${VERSION}.tgz" diff --git a/packages/u-navigator-2026.07.14.r013.tgz b/packages/u-navigator-2026.07.14.r013.tgz new file mode 100644 index 0000000..eccaa62 Binary files /dev/null and b/packages/u-navigator-2026.07.14.r013.tgz differ diff --git a/server/public/app.js b/server/public/app.js index 432784d..f685c22 100644 --- a/server/public/app.js +++ b/server/public/app.js @@ -2283,16 +2283,17 @@ async function finishItemPointerDrag(event, move, up) { if (!drag) return; markDraggingRows(drag.paths, false); - state.pointerDrag = null; if (!drag.active) { + state.pointerDrag = null; return; } event.preventDefault(); state.suppressClickPath = drag.path; state.suppressItemActivationUntil = Date.now() + 450; - const target = findPointerDropTarget(event); + const target = findPointerDropTarget(event, drag); + state.pointerDrag = null; recordDebug('pointer.finish', { source: drag.path, sources: drag.paths, @@ -2378,7 +2379,7 @@ function clearPointerDropTarget() { } } -function findPointerDropTarget(event) { +function findPointerDropTarget(event, drag = state.pointerDrag) { let element; let elements = []; try { @@ -2404,16 +2405,22 @@ function findPointerDropTarget(event) { const win = state.windows.find((item) => item.id === windowEl.dataset.windowId); if (!win || win.kind !== 'explorer') return null; - const drag = state.pointerDrag; let row = null; + let overEntry = false; for (const candidate of elements) { try { const treeTarget = candidate.closest?.('.tree-label[data-tree-open]'); + if (treeTarget && treeTarget.closest?.('.window') === windowEl) { + overEntry = true; + } if (treeTarget && treeTarget.closest?.('.window') === windowEl && isValidPointerTargetPath(treeTarget.dataset.treeOpen, drag)) { row = treeTarget; break; } const candidateRow = candidate.closest?.('.file-row'); + if (candidateRow && candidateRow.closest?.('.window') === windowEl) { + overEntry = true; + } if (!candidateRow || candidateRow.dataset.type !== 'directory') { continue; } @@ -2435,6 +2442,9 @@ function findPointerDropTarget(event) { if (row) { return { windowId: win.id, path: row.dataset.path || row.dataset.treeOpen, row }; } + if (overEntry) { + return null; + } return { windowId: win.id, path: win.data.path, row: null }; } diff --git a/u-navigator.plg b/u-navigator.plg index 0a2637d..6feaf57 100644 --- a/u-navigator.plg +++ b/u-navigator.plg @@ -1,7 +1,7 @@ - + @@ -24,7 +24,7 @@ https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/packages/&package; -bf8938f8ee7dfe21d4a87d014f59acc3 +eb8a765a5e07ff3a65b04b40b6f76fb5