Skip to content

Commit dc280ea

Browse files
committed
fix(web): close menus when clicking into the browser tab
1 parent 2afa02a commit dc280ea

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

‎apps/web/src/browser/HostedBrowserWebview.tsx‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,16 +156,26 @@ 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;
165174
if (recoveryTimeout !== null) clearTimeout(recoveryTimeout);
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

0 commit comments

Comments
 (0)