| Index: ui/views/cocoa/bridged_native_widget.mm
|
| diff --git a/ui/views/cocoa/bridged_native_widget.mm b/ui/views/cocoa/bridged_native_widget.mm
|
| index 560f533009df6cd8efb4132130a2ed2640e7074a..91d4ff642d656e65f71afe42a652113c3a5fb6cb 100644
|
| --- a/ui/views/cocoa/bridged_native_widget.mm
|
| +++ b/ui/views/cocoa/bridged_native_widget.mm
|
| @@ -25,7 +25,8 @@ BridgedNativeWidget::BridgedNativeWidget(NativeWidgetMac* parent)
|
| : native_widget_mac_(parent),
|
| focus_manager_(NULL),
|
| target_fullscreen_state_(false),
|
| - in_fullscreen_transition_(false) {
|
| + in_fullscreen_transition_(false),
|
| + window_visible_(false) {
|
| DCHECK(parent);
|
| window_delegate_.reset(
|
| [[ViewsNSWindowDelegate alloc] initWithBridgedNativeWidget:this]);
|
| @@ -50,6 +51,18 @@ void BridgedNativeWidget::Init(base::scoped_nsobject<NSWindow> window,
|
| window_.swap(window);
|
| [window_ setDelegate:window_delegate_];
|
|
|
| + // Register for application hide notifications so that visibility can be
|
| + // properly tracked. This is not done in the delegate so that the lifetime is
|
| + // tied to the C++ object, rather than the delegate (which may be reference
|
| + // counted). This is required since the application hides do not send an
|
| + // orderOut: to individual windows. Unhide, however, does send an order
|
| + // message.
|
| + [[NSNotificationCenter defaultCenter]
|
| + addObserver:window_delegate_
|
| + selector:@selector(onWindowOrderChanged:)
|
| + name:NSApplicationDidHideNotification
|
| + object:nil];
|
| +
|
| // Validate the window's initial state, otherwise the bridge's initial
|
| // tracking state will be incorrect.
|
| DCHECK(![window_ isVisible]);
|
| @@ -97,6 +110,7 @@ void BridgedNativeWidget::SetRootView(views::View* view) {
|
| void BridgedNativeWidget::OnWindowWillClose() {
|
| [[window_ parentWindow] removeChildWindow:window_];
|
| [window_ setDelegate:nil];
|
| + [[NSNotificationCenter defaultCenter] removeObserver:window_delegate_];
|
| native_widget_mac_->OnWindowWillClose();
|
| }
|
|
|
| @@ -155,6 +169,15 @@ void BridgedNativeWidget::ToggleDesiredFullscreenState() {
|
| [window_ setCollectionBehavior:behavior];
|
| }
|
|
|
| +void BridgedNativeWidget::OnVisibilityChanged() {
|
| + if (window_visible_ == [window_ isVisible])
|
| + return;
|
| +
|
| + window_visible_ = [window_ isVisible];
|
| + native_widget_mac_->GetWidget()->OnNativeWidgetVisibilityChanged(
|
| + window_visible_);
|
| +}
|
| +
|
| InputMethod* BridgedNativeWidget::CreateInputMethod() {
|
| if (switches::IsTextInputFocusManagerEnabled())
|
| return new NullInputMethod();
|
|
|