Allow embedder to decide whether RenderWidgetHostViewCocoa becomes first responder on right click

提交: 5aae030b | 2026-04-27 21:53:06

← 返回列表

Allow embedder to decide whether RenderWidgetHostViewCocoa becomes first responder on right click

Minor
提交哈希: 5aae030b7fe77a07b19be35944859883b36d1239
提交时间: 2026-04-27 21:53:06
影响等级: Minor
生成工具: chromium-watcher
上游审核链接: 查看上游审核 🔗

📋 摘要

This commit adds a new shouldBecomeFirstResponderOnRightClick method to RenderWidgetHostViewCocoa, allowing the embedder (via RenderWidgetHostViewMacDelegate) to decide whether the view should become first responder on right click. By default on macOS, right-clicking an NSView does not make it the first responder, so the page does not receive focus/blur events. This fix addresses unintuitive behavior for Top Chrome WebUI-based menus that rely on blur events to dismiss themselves. It also updates the bookmark side panel context menu to close on focusout.

🎯 影响分析

The impact on WebView2Mac is minor. The core change is in content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm, which is part of the shared code path used by WebView2Mac. The new shouldBecomeFirstResponderOnRightClick method uses respondsToSelector: to check whether the delegate implements it, defaulting to NO if not implemented. Edge's downstream WebViewRenderWidgetHostViewMacDelegate (in edge_embedded_browser/client/mac/remote_cocoa/) does not currently implement this new method, so there is no behavior change for WebView2Mac — right clicks will continue not making the view first responder. The Chrome browser-specific changes (chrome/browser/renderer_host/ and chrome/browser/resources/side_panel/) only affect Chrome's own Top Chrome WebUI and bookmark side panel, and are irrelevant to WebView2Mac. If WebView2Mac later needs right-click-to-focus behavior (e.g., for custom context menus that rely on blur events to dismiss), it can implement shouldBecomeFirstResponderOnRightClick in WebViewRenderWidgetHostViewMacDelegate and return YES.

受影响的类:

RenderWidgetHostViewCocoa RenderWidgetHostViewMacDelegate WebViewRenderWidgetHostViewMacDelegate