![]() When using `views::WebView` on macOS `NativeWidgetMacNSWindowHost` contains a layer and compositor responsible for drawing web contents. To trigger drawing `NativeWidgetMacNSWindowHost::OnVisibilityChanged` needs to be called and `[NSWindow orderFrontRegardless]` does not trigger `[NSWindow orderWindow:relativeTo:]` which can change `NativeWidgetMacNSWindowHost` visiblity with stack: ``` views::NativeWidgetMacNSWindowHost::OnVisibilityChanged(bool) remote_cocoa::NativeWidgetNSWindowBridge::OnVisibilityChanged() -[ViewsNSWindowDelegate onWindowOrderChanged:] -[NativeWidgetMacNSWindow orderWindow:relativeTo:] ``` `views::Widget` has method for showing inactive window: `views::Widget::ShowInactive` which triggers `NativeWidgetMacNSWindowHost::OnVisibilityChanged` with stack: ``` views::NativeWidgetMacNSWindowHost::OnVisibilityChanged(bool) remote_cocoa::NativeWidgetNSWindowBridge::SetVisibilityState(remote_cocoa::mojom::WindowVisibilityState) views::NativeWidgetMacNSWindowHost::SetVisibilityState(remote_cocoa::mojom::WindowVisibilityState) views::NativeWidgetMac::Show(ui::mojom::WindowShowState, gfx::Rect const&) views::Widget::ShowInactive() + 168 ``` However this call seems to be insufficient to bring window to front, therefore `[NSWindow orderFrontRegardless]` still needs to be called. Calling `views::Widget::ShowInactive` ensures that all logic related to showing Chromium widget will be properly executed, but onfortunately it does not call `[NSWindow orderWindow:relativeTo:]` which is used to disabling headless mode by the `ElectronNSWindow`, therefore we need to trigger it manually through exposed `[ElectronNSWindow disableHeadlessMode]`. Fixes: #45415 |
||
---|---|---|
.. | ||
electron_bundle_mover.h | ||
electron_bundle_mover.mm | ||
electron_menu_controller.h | ||
electron_menu_controller.mm | ||
electron_native_widget_mac.h | ||
electron_native_widget_mac.mm | ||
electron_ns_panel.h | ||
electron_ns_panel.mm | ||
electron_ns_window.h | ||
electron_ns_window.mm | ||
electron_ns_window_delegate.h | ||
electron_ns_window_delegate.mm | ||
electron_preview_item.h | ||
electron_preview_item.mm | ||
electron_touch_bar.h | ||
electron_touch_bar.mm | ||
event_dispatching_window.h | ||
event_dispatching_window.mm | ||
NSString+ANSI.h | ||
NSString+ANSI.mm | ||
root_view_mac.h | ||
root_view_mac.mm | ||
views_delegate_mac.h | ||
views_delegate_mac.mm | ||
window_buttons_proxy.h | ||
window_buttons_proxy.mm |