authorgravatar for 75276669+Gigioxx@users.noreply.github.comGuillermo Casanova <75276669+Gigioxx@users.noreply.github.com> 2026-09-22 02:50:55-03:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-22 02:50:55-03:00
log438bf466fd7e97bb80f0d1f936b2c857830249b7
treeb3d50fae99ba360a4ccb33277335361362598d79
parentc26119ada3565dda55bc3e86fdf47c7f9088e4b5
signature Signed by PGP key B5690EEEBB952194

fix(web): close menus when clicking into the browser tab (#11148)


1 files changed, 10 insertions(+), 0 deletions(-)

apps/web/src/browser/HostedBrowserWebview.tsx+10
......@@ -156,9 +156,18 @@ export function HostedBrowserWebview(props: {
156156 }
157157 }, recovery.delayMs);
158158 };
159 // A click inside the guest only reaches this document as a webview focus
160 // event, so open menus and popovers never see the outside press that
161 // would dismiss them. Replay it as a pointerdown on the webview itself.
162 const dismissHostPopups = () => {
163 webview.dispatchEvent(
164 new PointerEvent("pointerdown", { bubbles: true, pointerType: "mouse" }),
165 );
166 };
159167 webview.addEventListener("did-attach", register);
160168 webview.addEventListener("dom-ready", register);
161169 webview.addEventListener("render-process-gone", recoverGuest);
170 webview.addEventListener("focus", dismissHostPopups);
162171 register();
163172 return () => {
164173 disposed = true;
......@@ -166,6 +175,7 @@ export function HostedBrowserWebview(props: {
166175 webview.removeEventListener("did-attach", register);
167176 webview.removeEventListener("dom-ready", register);
168177 webview.removeEventListener("render-process-gone", recoverGuest);
178 webview.removeEventListener("focus", dismissHostPopups);
169179 };
170180 }, [clientSettingsHydrated, config, initialSrc, runtimeTabId, webviewGeneration]);
171181