From f4b9bc9f12e01d078b380e92f68a16152f8e69aa Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Sat, 15 Aug 2026 03:10:11 +0200 Subject: [PATCH] fix(ui): remove phantom context menu scrollbars Keep hidden submenus in viewport-fixed positioning from their first layout so they do not enlarge the root context menu scroll area before hover. Preserve viewport-safe submenu placement for mouse and keyboard activation. --- src/renderer/styles.css | 4 ++-- tests/context-menu.test.tsx | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/renderer/styles.css b/src/renderer/styles.css index b3c73d1..b497979 100644 --- a/src/renderer/styles.css +++ b/src/renderer/styles.css @@ -243,7 +243,7 @@ body, .menu-submenu-dropdown { position: absolute; top: -4px; - left: 100%; + left: 0; z-index: 1001; min-width: max-content; background: var(--card); @@ -2712,7 +2712,7 @@ td { .ctx-menu-sub-items { display: block; - position: absolute; + position: fixed; left: 100%; top: 0; min-width: 120px; diff --git a/tests/context-menu.test.tsx b/tests/context-menu.test.tsx index 1d925cb..3a5ca1f 100644 --- a/tests/context-menu.test.tsx +++ b/tests/context-menu.test.tsx @@ -112,4 +112,9 @@ describe("ContextMenu", () => { expect(stylesSource).toMatch(/\.ctx-menu-sub:hover\s*>\s*\.ctx-menu-sub-items\.is-positioned/s); expect(contextMenuSource).toContain('window.addEventListener("pointerdown", onOutside, true)'); }); + + it("keeps hidden submenus outside the root menu scroll area before hover", () => { + expect(stylesSource).toMatch(/\.ctx-menu-sub-items\s*{[^}]*position:\s*fixed;/s); + expect(stylesSource).not.toMatch(/\.ctx-menu-sub-items\s*{[^}]*position:\s*absolute;/s); + }); });