OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "ui/base/cocoa/fullscreen_window_manager.h" | 5 #import "ui/base/cocoa/fullscreen_window_manager.h" |
6 | 6 |
7 namespace { | 7 namespace { |
8 | 8 |
9 // Get the screen with the menu bar. | 9 // Get the screen with the menu bar. |
10 NSScreen* GetMenuBarScreen() { | 10 NSScreen* GetMenuBarScreen() { |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 return; | 78 return; |
79 fullscreenActive_ = false; | 79 fullscreenActive_ = false; |
80 [self update]; | 80 [self update]; |
81 } | 81 } |
82 | 82 |
83 - (void)onScreenChanged:(NSNotification*)note { | 83 - (void)onScreenChanged:(NSNotification*)note { |
84 [self update]; | 84 [self update]; |
85 } | 85 } |
86 | 86 |
87 - (void)update { | 87 - (void)update { |
| 88 // From OS X 10.10, NSApplicationDidChangeScreenParametersNotification is sent |
| 89 // when displaying a fullscreen window, which should normally only be sent if |
| 90 // the monitor resolution has changed or new display is detected. |
88 if (![[NSScreen screens] containsObject:desiredScreen_]) | 91 if (![[NSScreen screens] containsObject:desiredScreen_]) |
89 desiredScreen_.reset([[window_ screen] retain]); | 92 desiredScreen_.reset([[window_ screen] retain]); |
90 | 93 |
91 base::mac::FullScreenMode newMode; | 94 base::mac::FullScreenMode newMode; |
92 if (!fullscreenActive_) | 95 if (!fullscreenActive_) |
93 newMode = base::mac::kFullScreenModeNormal; | 96 newMode = base::mac::kFullScreenModeNormal; |
94 else if (desiredScreen_ == GetMenuBarScreen()) | 97 else if ([desiredScreen_ isEqual:GetMenuBarScreen()]) |
95 newMode = base::mac::kFullScreenModeHideAll; | 98 newMode = base::mac::kFullScreenModeHideAll; |
96 else if (desiredScreen_ == GetDockScreen()) | 99 else if ([desiredScreen_ isEqual:GetDockScreen()]) |
97 newMode = base::mac::kFullScreenModeHideDock; | 100 newMode = base::mac::kFullScreenModeHideDock; |
98 else | 101 else |
99 newMode = base::mac::kFullScreenModeNormal; | 102 newMode = base::mac::kFullScreenModeNormal; |
100 | 103 |
101 if (fullscreenMode_ != newMode) { | 104 if (fullscreenMode_ != newMode) { |
102 if (fullscreenMode_ != base::mac::kFullScreenModeNormal) | 105 if (fullscreenMode_ != base::mac::kFullScreenModeNormal) |
103 base::mac::ReleaseFullScreen(fullscreenMode_); | 106 base::mac::ReleaseFullScreen(fullscreenMode_); |
104 if (newMode != base::mac::kFullScreenModeNormal) | 107 if (newMode != base::mac::kFullScreenModeNormal) |
105 base::mac::RequestFullScreen(newMode); | 108 base::mac::RequestFullScreen(newMode); |
106 fullscreenMode_ = newMode; | 109 fullscreenMode_ = newMode; |
107 } | 110 } |
108 | 111 |
109 if (fullscreenActive_) | 112 if (fullscreenActive_) |
110 [window_ setFrame:[desiredScreen_ frame] display:YES]; | 113 [window_ setFrame:[desiredScreen_ frame] display:YES]; |
111 } | 114 } |
112 | 115 |
113 @end | 116 @end |
OLD | NEW |