From fcb8a21a24280fa85ca324d4bb5df2b54fae43f5 Mon Sep 17 00:00:00 2001 From: Jinwoo-H Date: Thu, 30 Apr 2026 17:12:05 -0400 Subject: [PATCH] Revert "fix(tab-bar): dismiss tab context menu on window blur for webview clicks (#1274)" This reverts commit 61909fff032f8d7a66e30c2134391dbaf3231538. --- src/renderer/src/components/tab-bar/BrowserTab.tsx | 14 -------------- .../src/components/tab-bar/EditorFileTab.tsx | 14 -------------- .../src/components/tab-bar/SortableTab.tsx | 14 -------------- 3 files changed, 42 deletions(-) diff --git a/src/renderer/src/components/tab-bar/BrowserTab.tsx b/src/renderer/src/components/tab-bar/BrowserTab.tsx index 3d960dc4006..8c2e62b752a 100644 --- a/src/renderer/src/components/tab-bar/BrowserTab.tsx +++ b/src/renderer/src/components/tab-bar/BrowserTab.tsx @@ -97,20 +97,6 @@ export default function BrowserTab({ return () => window.removeEventListener(CLOSE_ALL_CONTEXT_MENUS_EVENT, closeMenu) }, []) - // Why: Electron elements run in a separate process, so clicking - // inside one never dispatches a pointerdown on the renderer document. Radix - // DropdownMenu relies on document pointerdown for outside-click detection, - // so it misses webview clicks. Listening for window blur catches the moment - // focus leaves the renderer (including into a webview). - useEffect(() => { - if (!menuOpen) { - return - } - const dismiss = (): void => setMenuOpen(false) - window.addEventListener('blur', dismiss) - return () => window.removeEventListener('blur', dismiss) - }, [menuOpen]) - return ( <>
window.removeEventListener(CLOSE_ALL_CONTEXT_MENUS_EVENT, closeMenu) }, []) - // Why: Electron elements run in a separate process, so clicking - // inside one never dispatches a pointerdown on the renderer document. Radix - // DropdownMenu relies on document pointerdown for outside-click detection, - // so it misses webview clicks. Listening for window blur catches the moment - // focus leaves the renderer (including into a webview). - useEffect(() => { - if (!menuOpen) { - return - } - const dismiss = (): void => setMenuOpen(false) - window.addEventListener('blur', dismiss) - return () => window.removeEventListener('blur', dismiss) - }, [menuOpen]) - return ( <>
window.removeEventListener(CLOSE_ALL_CONTEXT_MENUS_EVENT, closeMenu) }, []) - // Why: Electron elements run in a separate process, so clicking - // inside one never dispatches a pointerdown on the renderer document. Radix - // DropdownMenu relies on document pointerdown for outside-click detection, - // so it misses webview clicks. Listening for window blur catches the moment - // focus leaves the renderer (including into a webview). - useEffect(() => { - if (!menuOpen) { - return - } - const dismiss = (): void => setMenuOpen(false) - window.addEventListener('blur', dismiss) - return () => window.removeEventListener('blur', dismiss) - }, [menuOpen]) - // Why: while editing, suppress dnd-kit drag listeners and tab-activation/double-click // handlers so typing/clicking inside the inline input doesn't start a drag, re-open the // editor, or steal focus away from the input. We still spread `attributes` unconditionally