diff --git a/src/renderer/src/lib/visible-overlay.test.ts b/src/renderer/src/lib/visible-overlay.test.ts index 5b486450ce7..4fa99e0be23 100644 --- a/src/renderer/src/lib/visible-overlay.test.ts +++ b/src/renderer/src/lib/visible-overlay.test.ts @@ -35,7 +35,7 @@ describe('hasVisibleOverlay', () => { expect(hasVisibleOverlay()).toBe(false) - document.querySelector('[data-worktree-sidebar]')!.innerHTML = '
' + mount('
') expect(hasVisibleOverlay()).toBe(true) }) diff --git a/src/renderer/src/lib/visible-overlay.ts b/src/renderer/src/lib/visible-overlay.ts index 6892010b4df..44dc14a514a 100644 --- a/src/renderer/src/lib/visible-overlay.ts +++ b/src/renderer/src/lib/visible-overlay.ts @@ -1,4 +1,6 @@ -const OVERLAY_SELECTOR = '[role="dialog"], [role="alertdialog"], [role="listbox"], [role="menu"]' +// The always-mounted worktree sidebar is page chrome, not an Escape-owning popup. +const OVERLAY_SELECTOR = + '[role="dialog"], [role="alertdialog"], [role="listbox"]:not([data-worktree-sidebar]), [role="menu"]' type VisibleOverlayOptions = { /** Overlays inside a match are treated as page content, not as a layer above it. */ @@ -15,10 +17,6 @@ export function hasVisibleOverlay(options?: VisibleOverlayOptions): boolean { if (!(element instanceof HTMLElement)) { return false } - // The persistent workspace list is page chrome, not an Escape-owning popup. - if (element.matches('[role="listbox"][data-worktree-sidebar]')) { - return false - } if (element.closest('[aria-hidden="true"]')) { return false }