From af1d1eea231007fbc805ddcdb51cb93b8269fafb Mon Sep 17 00:00:00 2001 From: kodi Date: Sat, 14 Mar 2026 11:51:29 +0100 Subject: [PATCH] feat: contextmenu Open aangepast --- .../test_ui_smoke_golden.cpython-313.pyc | Bin 34369 -> 34765 bytes .../tests/golden/test_ui_smoke_golden.py | 6 +++++- webui/html/app.js | 13 ++++++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/webui/backend/tests/golden/__pycache__/test_ui_smoke_golden.cpython-313.pyc b/webui/backend/tests/golden/__pycache__/test_ui_smoke_golden.cpython-313.pyc index 822f628521d372d4dd644780788e19311dce1790..63cb2b1bdb15c2ef78a876b75a7a306c4e1a5890 100644 GIT binary patch delta 687 zcmX@u!*sTviSIKnFBbz4#M^GoyqLO?uULju3c20bg?To}2Pfj*8Qf52_CQpOOGn-9)x*0bI_!%%xzThh|d5XW<)KqZqehpV!H)K2~rF3G4rIUrnQ^1N{F zdPR^VSbt_-dQPf!l|p8k0@w(>?999r1zTHN1*MeCBB0s%MU_gL3e{B>MX4pFMIgI9 za}(3iEY?)0sR7D_Wu~O&qdG~`x(e!^)RfE;sFj;TuC zyb?$!lpkhKzL1)Ig(GM3#0rVYyUO_|@2C*iY+Nychp}w)krr=8qZl?uSH>9}*CjMB oN@#vz0CPXo@i4IPbW~ktmb}5j)9%~k+v@*;nSn*BNDLT=0N%Up=Kufz delta 451 zcmX@x&vdYdiSIKnFBbz4G+A!VoRqSWuUL<%KzTABi^}HZdX?OhH&}^GR^=C%>|i7^ z*%M0VLg@uo5b>>0{!JhaQvVmqH?WQX>+2N&tJ{3QI)o9dKvD>z&=yF83@)%W0n;m? z{Id{xlbsXa=1V?xjEpBI2l^>9o&uAn!Q>ebxjDekfN`=wfXL)2{%VY@llhGlnQw%$ zPQLH2Jb6-p67#K4cCgs(P!2GCCzNw?et`01r9dU-d!gK5vHPJsAe!;PMn>Do-4XJ#nZ>@PIVG72H8l#EC8@c^dO4|i=_MHoing{2 zhMPqrAIUJLZ2nO?lWDS6J^$qO6_+NLHVJIrUpaw?v1oHZn>V9a1RJ9(;|z}L5}Fq! QG`}!_xgW|VZ)}$V0LG)2g8%>k diff --git a/webui/backend/tests/golden/test_ui_smoke_golden.py b/webui/backend/tests/golden/test_ui_smoke_golden.py index fdbf96e..5b67d96 100644 --- a/webui/backend/tests/golden/test_ui_smoke_golden.py +++ b/webui/backend/tests/golden/test_ui_smoke_golden.py @@ -213,6 +213,7 @@ class UiSmokeGoldenTest(unittest.TestCase): self.assertIn('function contextMenuElements()', app_js) self.assertIn('function openContextMenu(pane, entry, event)', app_js) self.assertIn('function closeContextMenu()', app_js) + self.assertIn('function isOpenableSelection(item)', app_js) self.assertIn('function applyContextMenuSelection()', app_js) self.assertIn('function startContextMenuOpen()', app_js) self.assertIn('function startContextMenuEdit()', app_js) @@ -228,7 +229,10 @@ class UiSmokeGoldenTest(unittest.TestCase): self.assertIn('if (!row) {', app_js) self.assertIn('closeContextMenu();', app_js) self.assertIn('elements.openButton.classList.toggle("hidden", isMulti);', app_js) - self.assertIn('elements.openButton.disabled = isMulti || items.length !== 1;', app_js) + self.assertIn('const openableSingle = items.length === 1 && isOpenableSelection(items[0]);', app_js) + self.assertIn('elements.openButton.disabled = !openableSingle;', app_js) + self.assertIn('if (item.kind === "directory") {', app_js) + self.assertIn('return isImageSelection(item) || isVideoSelection(item);', app_js) self.assertIn('const editableSingle = items.length === 1 && isEditableSelection(items[0]);', app_js) self.assertIn('elements.editButton.classList.toggle("hidden", isMulti || items.length !== 1 || items[0].kind !== "file");', app_js) self.assertIn('elements.editButton.disabled = !editableSingle;', app_js) diff --git a/webui/html/app.js b/webui/html/app.js index b6f6bdc..b06523d 100644 --- a/webui/html/app.js +++ b/webui/html/app.js @@ -336,6 +336,16 @@ function contextMenuElements() { }; } +function isOpenableSelection(item) { + if (!item) { + return false; + } + if (item.kind === "directory") { + return true; + } + return isImageSelection(item) || isVideoSelection(item); +} + function isContextMenuOpen() { return contextMenuState.open && !contextMenuElements().menu.classList.contains("hidden"); } @@ -371,11 +381,12 @@ function openContextMenu(pane, entry, event) { contextMenuState.anchorPath = entry.path; const isMulti = items.length > 1; + const openableSingle = items.length === 1 && isOpenableSelection(items[0]); const editableSingle = items.length === 1 && isEditableSelection(items[0]); elements.scope.textContent = isMulti ? "Multi-selection" : "Single item"; elements.target.textContent = isMulti ? `${items.length} selected items` : entry.name; elements.openButton.classList.toggle("hidden", isMulti); - elements.openButton.disabled = isMulti || items.length !== 1; + elements.openButton.disabled = !openableSingle; elements.editButton.classList.toggle("hidden", isMulti || items.length !== 1 || items[0].kind !== "file"); elements.editButton.disabled = !editableSingle; elements.renameButton.classList.toggle("hidden", isMulti);