| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "chrome/browser/ui/cocoa/apps/native_app_window_cocoa.h" | 5 #include "chrome/browser/ui/cocoa/apps/native_app_window_cocoa.h" |
| 6 | 6 |
| 7 #include "apps/app_shim/extension_app_shim_handler_mac.h" | 7 #include "apps/app_shim/extension_app_shim_handler_mac.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/mac/mac_util.h" | 9 #include "base/mac/mac_util.h" |
| 10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 - (void)mouseDragged:(NSEvent*)event { | 258 - (void)mouseDragged:(NSEvent*)event { |
| 259 appWindow_->HandleMouseEvent(event); | 259 appWindow_->HandleMouseEvent(event); |
| 260 } | 260 } |
| 261 | 261 |
| 262 @end | 262 @end |
| 263 | 263 |
| 264 @interface NSView (WebContentsView) | 264 @interface NSView (WebContentsView) |
| 265 - (void)setMouseDownCanMoveWindow:(BOOL)can_move; | 265 - (void)setMouseDownCanMoveWindow:(BOOL)can_move; |
| 266 @end | 266 @end |
| 267 | 267 |
| 268 namespace { |
| 269 |
| 270 const NSInteger kAlwaysOnTopWindowLevel = NSFloatingWindowLevel; |
| 271 |
| 272 } // namespace |
| 273 |
| 268 NativeAppWindowCocoa::NativeAppWindowCocoa( | 274 NativeAppWindowCocoa::NativeAppWindowCocoa( |
| 269 ShellWindow* shell_window, | 275 ShellWindow* shell_window, |
| 270 const ShellWindow::CreateParams& params) | 276 const ShellWindow::CreateParams& params) |
| 271 : shell_window_(shell_window), | 277 : shell_window_(shell_window), |
| 272 has_frame_(params.frame == ShellWindow::FRAME_CHROME), | 278 has_frame_(params.frame == ShellWindow::FRAME_CHROME), |
| 273 is_hidden_(false), | 279 is_hidden_(false), |
| 274 is_hidden_with_app_(false), | 280 is_hidden_with_app_(false), |
| 275 is_maximized_(false), | 281 is_maximized_(false), |
| 276 is_fullscreen_(false), | 282 is_fullscreen_(false), |
| 277 attention_request_id_(0), | 283 attention_request_id_(0), |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 if (IsBoundedSize(max_size_)) { | 333 if (IsBoundedSize(max_size_)) { |
| 328 CGFloat max_width = max_size_.width() ? max_size_.width() : CGFLOAT_MAX; | 334 CGFloat max_width = max_size_.width() ? max_size_.width() : CGFLOAT_MAX; |
| 329 CGFloat max_height = max_size_.height() ? max_size_.height() : CGFLOAT_MAX; | 335 CGFloat max_height = max_size_.height() ? max_size_.height() : CGFLOAT_MAX; |
| 330 [window setContentMaxSize:NSMakeSize(max_width, max_height)]; | 336 [window setContentMaxSize:NSMakeSize(max_width, max_height)]; |
| 331 } | 337 } |
| 332 | 338 |
| 333 if (base::mac::IsOSSnowLeopard() && | 339 if (base::mac::IsOSSnowLeopard() && |
| 334 [window respondsToSelector:@selector(setBottomCornerRounded:)]) | 340 [window respondsToSelector:@selector(setBottomCornerRounded:)]) |
| 335 [window setBottomCornerRounded:NO]; | 341 [window setBottomCornerRounded:NO]; |
| 336 | 342 |
| 343 if (params.always_on_top) |
| 344 [window setLevel:kAlwaysOnTopWindowLevel]; |
| 345 |
| 337 // Set the window to participate in Lion Fullscreen mode. Setting this flag | 346 // Set the window to participate in Lion Fullscreen mode. Setting this flag |
| 338 // has no effect on Snow Leopard or earlier. UI controls for fullscreen are | 347 // has no effect on Snow Leopard or earlier. UI controls for fullscreen are |
| 339 // only shown for apps that have unbounded size. | 348 // only shown for apps that have unbounded size. |
| 340 if (shows_fullscreen_controls_) | 349 if (shows_fullscreen_controls_) |
| 341 SetFullScreenCollectionBehavior(window, true); | 350 SetFullScreenCollectionBehavior(window, true); |
| 342 | 351 |
| 343 window_controller_.reset( | 352 window_controller_.reset( |
| 344 [[NativeAppWindowController alloc] initWithWindow:window.release()]); | 353 [[NativeAppWindowController alloc] initWithWindow:window.release()]); |
| 345 | 354 |
| 346 NSView* view = web_contents()->GetView()->GetNativeView(); | 355 NSView* view = web_contents()->GetView()->GetNativeView(); |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 800 void NativeAppWindowCocoa::FlashFrame(bool flash) { | 809 void NativeAppWindowCocoa::FlashFrame(bool flash) { |
| 801 if (flash) { | 810 if (flash) { |
| 802 attention_request_id_ = [NSApp requestUserAttention:NSInformationalRequest]; | 811 attention_request_id_ = [NSApp requestUserAttention:NSInformationalRequest]; |
| 803 } else { | 812 } else { |
| 804 [NSApp cancelUserAttentionRequest:attention_request_id_]; | 813 [NSApp cancelUserAttentionRequest:attention_request_id_]; |
| 805 attention_request_id_ = 0; | 814 attention_request_id_ = 0; |
| 806 } | 815 } |
| 807 } | 816 } |
| 808 | 817 |
| 809 bool NativeAppWindowCocoa::IsAlwaysOnTop() const { | 818 bool NativeAppWindowCocoa::IsAlwaysOnTop() const { |
| 810 return false; | 819 return [window() level] == kAlwaysOnTopWindowLevel; |
| 811 } | 820 } |
| 812 | 821 |
| 813 void NativeAppWindowCocoa::RenderViewHostChanged( | 822 void NativeAppWindowCocoa::RenderViewHostChanged( |
| 814 content::RenderViewHost* old_host, | 823 content::RenderViewHost* old_host, |
| 815 content::RenderViewHost* new_host) { | 824 content::RenderViewHost* new_host) { |
| 816 web_contents()->GetView()->Focus(); | 825 web_contents()->GetView()->Focus(); |
| 817 } | 826 } |
| 818 | 827 |
| 819 gfx::Insets NativeAppWindowCocoa::GetFrameInsets() const { | 828 gfx::Insets NativeAppWindowCocoa::GetFrameInsets() const { |
| 820 if (!has_frame_) | 829 if (!has_frame_) |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 970 is_hidden_with_app_ = true; | 979 is_hidden_with_app_ = true; |
| 971 HideWithoutMarkingHidden(); | 980 HideWithoutMarkingHidden(); |
| 972 } | 981 } |
| 973 | 982 |
| 974 void NativeAppWindowCocoa::ShowWithApp() { | 983 void NativeAppWindowCocoa::ShowWithApp() { |
| 975 is_hidden_with_app_ = false; | 984 is_hidden_with_app_ = false; |
| 976 if (!is_hidden_) | 985 if (!is_hidden_) |
| 977 ShowInactive(); | 986 ShowInactive(); |
| 978 } | 987 } |
| 979 | 988 |
| 989 void NativeAppWindowCocoa::SetAlwaysOnTop(bool always_on_top) { |
| 990 [window() setLevel:(always_on_top ? kAlwaysOnTopWindowLevel : |
| 991 NSNormalWindowLevel)]; |
| 992 shell_window_->OnNativeWindowChanged(); |
| 993 } |
| 994 |
| 980 void NativeAppWindowCocoa::HideWithoutMarkingHidden() { | 995 void NativeAppWindowCocoa::HideWithoutMarkingHidden() { |
| 981 [window() orderOut:window_controller_]; | 996 [window() orderOut:window_controller_]; |
| 982 } | 997 } |
| 983 | 998 |
| 984 NativeAppWindowCocoa::~NativeAppWindowCocoa() { | 999 NativeAppWindowCocoa::~NativeAppWindowCocoa() { |
| 985 } | 1000 } |
| 986 | 1001 |
| 987 ShellNSWindow* NativeAppWindowCocoa::window() const { | 1002 ShellNSWindow* NativeAppWindowCocoa::window() const { |
| 988 NSWindow* window = [window_controller_ window]; | 1003 NSWindow* window = [window_controller_ window]; |
| 989 CHECK(!window || [window isKindOfClass:[ShellNSWindow class]]); | 1004 CHECK(!window || [window isKindOfClass:[ShellNSWindow class]]); |
| 990 return static_cast<ShellNSWindow*>(window); | 1005 return static_cast<ShellNSWindow*>(window); |
| 991 } | 1006 } |
| 992 | 1007 |
| 993 void NativeAppWindowCocoa::UpdateRestoredBounds() { | 1008 void NativeAppWindowCocoa::UpdateRestoredBounds() { |
| 994 if (IsRestored(*this)) | 1009 if (IsRestored(*this)) |
| 995 restored_bounds_ = [window() frame]; | 1010 restored_bounds_ = [window() frame]; |
| 996 } | 1011 } |
| OLD | NEW |