OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/browser/ui/views/apps/chrome_native_app_window_views_mac.h" | 5 #import "chrome/browser/ui/views/apps/chrome_native_app_window_views_mac.h" |
6 | 6 |
| 7 #import <Cocoa/Cocoa.h> |
| 8 |
| 9 #import "base/mac/scoped_nsobject.h" |
7 #include "chrome/browser/apps/app_shim/extension_app_shim_handler_mac.h" | 10 #include "chrome/browser/apps/app_shim/extension_app_shim_handler_mac.h" |
8 #include "chrome/browser/ui/views/apps/app_window_native_widget_mac.h" | 11 #import "chrome/browser/ui/views/apps/app_window_native_widget_mac.h" |
9 #include "chrome/browser/ui/views/apps/native_app_window_frame_view_mac.h" | 12 #import "chrome/browser/ui/views/apps/native_app_window_frame_view_mac.h" |
| 13 |
| 14 @interface NSView (WebContentsView) |
| 15 - (void)setMouseDownCanMoveWindow:(BOOL)can_move; |
| 16 @end |
10 | 17 |
11 ChromeNativeAppWindowViewsMac::ChromeNativeAppWindowViewsMac() | 18 ChromeNativeAppWindowViewsMac::ChromeNativeAppWindowViewsMac() |
12 : is_hidden_with_app_(false) { | 19 : is_hidden_with_app_(false) { |
13 } | 20 } |
14 | 21 |
15 ChromeNativeAppWindowViewsMac::~ChromeNativeAppWindowViewsMac() { | 22 ChromeNativeAppWindowViewsMac::~ChromeNativeAppWindowViewsMac() { |
16 } | 23 } |
17 | 24 |
18 void ChromeNativeAppWindowViewsMac::OnBeforeWidgetInit( | 25 void ChromeNativeAppWindowViewsMac::OnBeforeWidgetInit( |
19 const extensions::AppWindow::CreateParams& create_params, | 26 const extensions::AppWindow::CreateParams& create_params, |
20 views::Widget::InitParams* init_params, | 27 views::Widget::InitParams* init_params, |
21 views::Widget* widget) { | 28 views::Widget* widget) { |
22 DCHECK(!init_params->native_widget); | 29 DCHECK(!init_params->native_widget); |
23 init_params->remove_standard_frame = IsFrameless(); | 30 init_params->remove_standard_frame = IsFrameless(); |
24 init_params->native_widget = new AppWindowNativeWidgetMac(widget, this); | 31 init_params->native_widget = new AppWindowNativeWidgetMac(widget, this); |
25 ChromeNativeAppWindowViews::OnBeforeWidgetInit(create_params, init_params, | 32 ChromeNativeAppWindowViews::OnBeforeWidgetInit(create_params, init_params, |
26 widget); | 33 widget); |
27 } | 34 } |
28 | 35 |
29 views::NonClientFrameView* | 36 views::NonClientFrameView* |
30 ChromeNativeAppWindowViewsMac::CreateStandardDesktopAppFrame() { | 37 ChromeNativeAppWindowViewsMac::CreateStandardDesktopAppFrame() { |
31 return new NativeAppWindowFrameViewMac(widget()); | 38 return new NativeAppWindowFrameViewMac(widget(), this); |
32 } | 39 } |
33 | 40 |
34 views::NonClientFrameView* | 41 views::NonClientFrameView* |
35 ChromeNativeAppWindowViewsMac::CreateNonStandardAppFrame() { | 42 ChromeNativeAppWindowViewsMac::CreateNonStandardAppFrame() { |
36 return new NativeAppWindowFrameViewMac(widget()); | 43 return new NativeAppWindowFrameViewMac(widget(), this); |
37 } | 44 } |
38 | 45 |
39 void ChromeNativeAppWindowViewsMac::Show() { | 46 void ChromeNativeAppWindowViewsMac::Show() { |
40 UnhideWithoutActivation(); | 47 UnhideWithoutActivation(); |
41 ChromeNativeAppWindowViews::Show(); | 48 ChromeNativeAppWindowViews::Show(); |
42 } | 49 } |
43 | 50 |
44 void ChromeNativeAppWindowViewsMac::ShowInactive() { | 51 void ChromeNativeAppWindowViewsMac::ShowInactive() { |
45 if (is_hidden_with_app_) | 52 if (is_hidden_with_app_) |
46 return; | 53 return; |
47 | 54 |
48 ChromeNativeAppWindowViews::ShowInactive(); | 55 ChromeNativeAppWindowViews::ShowInactive(); |
49 } | 56 } |
50 | 57 |
51 void ChromeNativeAppWindowViewsMac::Activate() { | 58 void ChromeNativeAppWindowViewsMac::Activate() { |
52 UnhideWithoutActivation(); | 59 UnhideWithoutActivation(); |
53 ChromeNativeAppWindowViews::Activate(); | 60 ChromeNativeAppWindowViews::Activate(); |
54 } | 61 } |
55 | 62 |
56 void ChromeNativeAppWindowViewsMac::FlashFrame(bool flash) { | 63 void ChromeNativeAppWindowViewsMac::FlashFrame(bool flash) { |
57 apps::ExtensionAppShimHandler::RequestUserAttentionForWindow( | 64 apps::ExtensionAppShimHandler::RequestUserAttentionForWindow( |
58 app_window(), flash ? apps::APP_SHIM_ATTENTION_CRITICAL | 65 app_window(), flash ? apps::APP_SHIM_ATTENTION_CRITICAL |
59 : apps::APP_SHIM_ATTENTION_CANCEL); | 66 : apps::APP_SHIM_ATTENTION_CANCEL); |
60 } | 67 } |
61 | 68 |
| 69 void ChromeNativeAppWindowViewsMac::UpdateDraggableRegions( |
| 70 const std::vector<extensions::DraggableRegion>& regions) { |
| 71 ChromeNativeAppWindowViews::UpdateDraggableRegions(regions); |
| 72 |
| 73 NSView* web_contents_view = app_window()->web_contents()->GetNativeView(); |
| 74 [web_contents_view setMouseDownCanMoveWindow:YES]; |
| 75 } |
| 76 |
62 void ChromeNativeAppWindowViewsMac::ShowWithApp() { | 77 void ChromeNativeAppWindowViewsMac::ShowWithApp() { |
63 is_hidden_with_app_ = false; | 78 is_hidden_with_app_ = false; |
64 if (!app_window()->is_hidden()) | 79 if (!app_window()->is_hidden()) |
65 ShowInactive(); | 80 ShowInactive(); |
66 } | 81 } |
67 | 82 |
68 void ChromeNativeAppWindowViewsMac::HideWithApp() { | 83 void ChromeNativeAppWindowViewsMac::HideWithApp() { |
69 is_hidden_with_app_ = true; | 84 is_hidden_with_app_ = true; |
70 ChromeNativeAppWindowViews::Hide(); | 85 ChromeNativeAppWindowViews::Hide(); |
71 } | 86 } |
72 | 87 |
73 void ChromeNativeAppWindowViewsMac::UnhideWithoutActivation() { | 88 void ChromeNativeAppWindowViewsMac::UnhideWithoutActivation() { |
74 if (is_hidden_with_app_) { | 89 if (is_hidden_with_app_) { |
75 apps::ExtensionAppShimHandler::UnhideWithoutActivationForWindow( | 90 apps::ExtensionAppShimHandler::UnhideWithoutActivationForWindow( |
76 app_window()); | 91 app_window()); |
77 is_hidden_with_app_ = false; | 92 is_hidden_with_app_ = false; |
78 } | 93 } |
79 } | 94 } |
OLD | NEW |