diff --git a/apps/desktop/src/components/ui/CustomContextMenu.vue b/apps/desktop/src/components/ui/CustomContextMenu.vue index a3075858e..1ff159c91 100644 --- a/apps/desktop/src/components/ui/CustomContextMenu.vue +++ b/apps/desktop/src/components/ui/CustomContextMenu.vue @@ -70,7 +70,16 @@ function onPointerDownOutside(e: PointerEvent) { } } -function onScroll() { +function isScrollInsideMenu(e: Event): boolean { + const target = e.target; + if (!(target instanceof Node)) return false; + return !!(menuRef.value?.contains(target) || subRef.value?.contains(target)); +} + +function onScroll(e: Event) { + // Submenus (and tall main menus) are scrollable; ignore their own scroll + // so wheel/trackpad scrolling does not dismiss the menu. + if (isScrollInsideMenu(e)) return; close(); } @@ -262,7 +271,7 @@ onBeforeUnmount(() => { -
+