Fix same-window folder drop target detection

This commit is contained in:
Mikei386
2026-07-14 18:23:00 +02:00
parent 8ae0b96ce0
commit e4440ddef0
4 changed files with 17 additions and 7 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
set -eu set -eu
PLUGIN="u-navigator" PLUGIN="u-navigator"
VERSION="2026.07.14.r012" VERSION="2026.07.14.r013"
PKG_DIR="packages" PKG_DIR="packages"
WORK_DIR=".plugin-build" WORK_DIR=".plugin-build"
PKG_NAME="${PLUGIN}-${VERSION}.tgz" PKG_NAME="${PLUGIN}-${VERSION}.tgz"
Binary file not shown.
+14 -4
View File
@@ -2283,16 +2283,17 @@ async function finishItemPointerDrag(event, move, up) {
if (!drag) return; if (!drag) return;
markDraggingRows(drag.paths, false); markDraggingRows(drag.paths, false);
state.pointerDrag = null;
if (!drag.active) { if (!drag.active) {
state.pointerDrag = null;
return; return;
} }
event.preventDefault(); event.preventDefault();
state.suppressClickPath = drag.path; state.suppressClickPath = drag.path;
state.suppressItemActivationUntil = Date.now() + 450; state.suppressItemActivationUntil = Date.now() + 450;
const target = findPointerDropTarget(event); const target = findPointerDropTarget(event, drag);
state.pointerDrag = null;
recordDebug('pointer.finish', { recordDebug('pointer.finish', {
source: drag.path, source: drag.path,
sources: drag.paths, sources: drag.paths,
@@ -2378,7 +2379,7 @@ function clearPointerDropTarget() {
} }
} }
function findPointerDropTarget(event) { function findPointerDropTarget(event, drag = state.pointerDrag) {
let element; let element;
let elements = []; let elements = [];
try { try {
@@ -2404,16 +2405,22 @@ function findPointerDropTarget(event) {
const win = state.windows.find((item) => item.id === windowEl.dataset.windowId); const win = state.windows.find((item) => item.id === windowEl.dataset.windowId);
if (!win || win.kind !== 'explorer') return null; if (!win || win.kind !== 'explorer') return null;
const drag = state.pointerDrag;
let row = null; let row = null;
let overEntry = false;
for (const candidate of elements) { for (const candidate of elements) {
try { try {
const treeTarget = candidate.closest?.('.tree-label[data-tree-open]'); 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)) { if (treeTarget && treeTarget.closest?.('.window') === windowEl && isValidPointerTargetPath(treeTarget.dataset.treeOpen, drag)) {
row = treeTarget; row = treeTarget;
break; break;
} }
const candidateRow = candidate.closest?.('.file-row'); const candidateRow = candidate.closest?.('.file-row');
if (candidateRow && candidateRow.closest?.('.window') === windowEl) {
overEntry = true;
}
if (!candidateRow || candidateRow.dataset.type !== 'directory') { if (!candidateRow || candidateRow.dataset.type !== 'directory') {
continue; continue;
} }
@@ -2435,6 +2442,9 @@ function findPointerDropTarget(event) {
if (row) { if (row) {
return { windowId: win.id, path: row.dataset.path || row.dataset.treeOpen, 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 }; return { windowId: win.id, path: win.data.path, row: null };
} }
+2 -2
View File
@@ -1,7 +1,7 @@
<!DOCTYPE PLUGIN [ <!DOCTYPE PLUGIN [
<!ENTITY name "u-navigator"> <!ENTITY name "u-navigator">
<!ENTITY author "Michael Roll"> <!ENTITY author "Michael Roll">
<!ENTITY version "2026.07.14.r012"> <!ENTITY version "2026.07.14.r013">
<!ENTITY package "&name;-&version;.tgz"> <!ENTITY package "&name;-&version;.tgz">
<!ENTITY pluginURL "https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/u-navigator.plg"> <!ENTITY pluginURL "https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/u-navigator.plg">
<!ENTITY support "https://git.casaderoll.de/michael/Unraid-Navigator"> <!ENTITY support "https://git.casaderoll.de/michael/Unraid-Navigator">
@@ -24,7 +24,7 @@
<FILE Name="/boot/config/plugins/&name;/&package;"> <FILE Name="/boot/config/plugins/&name;/&package;">
<URL>https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/packages/&package;</URL> <URL>https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/packages/&package;</URL>
<MD5>bf8938f8ee7dfe21d4a87d014f59acc3</MD5> <MD5>eb8a765a5e07ff3a65b04b40b6f76fb5</MD5>
</FILE> </FILE>
<FILE Run="/bin/bash"> <FILE Run="/bin/bash">