Index: chrome/browser/ui/cocoa/apps/native_app_window_cocoa.mm |
diff --git a/chrome/browser/ui/cocoa/apps/native_app_window_cocoa.mm b/chrome/browser/ui/cocoa/apps/native_app_window_cocoa.mm |
index 43107fe03f8e28976e23036e44051d0a26e28c98..6a5c58d4f2217c00638d17f5d1831ed326f1a2e1 100644 |
--- a/chrome/browser/ui/cocoa/apps/native_app_window_cocoa.mm |
+++ b/chrome/browser/ui/cocoa/apps/native_app_window_cocoa.mm |
@@ -56,7 +56,8 @@ using apps::ShellWindow; |
@end |
enum { |
- NSWindowCollectionBehaviorFullScreenPrimary = 1 << 7 |
+ NSWindowCollectionBehaviorFullScreenPrimary = 1 << 7, |
+ NSFullScreenWindowMask = 1 << 14 |
}; |
#endif // MAC_OS_X_VERSION_10_7 |
@@ -85,6 +86,21 @@ enum { |
appWindow_->WindowDidResize(); |
} |
+- (void)windowDidEndLiveResize:(NSNotification*)notification { |
+ if (appWindow_) |
+ appWindow_->WindowDidFinishResize(); |
+} |
+ |
+- (void)windowDidEnterFullScreen:(NSNotification*)notification { |
+ if (appWindow_) |
+ appWindow_->WindowDidFinishResize(); |
+} |
+ |
+- (void)windowDidExitFullScreen:(NSNotification*)notification { |
+ if (appWindow_) |
+ appWindow_->WindowDidFinishResize(); |
+} |
+ |
- (void)windowDidMove:(NSNotification*)notification { |
if (appWindow_) |
appWindow_->WindowDidMove(); |
@@ -566,6 +582,9 @@ void NativeAppWindowCocoa::SetBounds(const gfx::Rect& bounds) { |
cocoa_bounds.origin.y = NSHeight([screen frame]) - checked_bounds.bottom(); |
[window() setFrame:cocoa_bounds display:YES]; |
+ // setFrame: without animate: does not trigger a windowDidEndLiveResize: so |
+ // call it here. |
+ WindowDidFinishResize(); |
} |
void NativeAppWindowCocoa::UpdateWindowIcon() { |
@@ -839,7 +858,7 @@ void NativeAppWindowCocoa::WindowDidResignKey() { |
rwhv->SetActive(false); |
} |
-void NativeAppWindowCocoa::WindowDidResize() { |
+void NativeAppWindowCocoa::WindowDidFinishResize() { |
// Update |is_maximized_| if needed: |
// - Exit maximized state if resized. |
// - Consider us maximized if resize places us back to maximized location. |
@@ -851,7 +870,13 @@ void NativeAppWindowCocoa::WindowDidResize() { |
else if (NSEqualPoints(frame.origin, screen.origin)) |
is_maximized_ = true; |
+ // Update |is_fullscreen_| if needed. |
+ is_fullscreen_ = ([window() styleMask] & NSFullScreenWindowMask) != 0; |
+ |
UpdateRestoredBounds(); |
+} |
+ |
+void NativeAppWindowCocoa::WindowDidResize() { |
shell_window_->OnNativeWindowChanged(); |
} |