Index: chrome/browser/ui/views/apps/native_app_window_views.cc |
diff --git a/chrome/browser/ui/views/apps/native_app_window_views.cc b/chrome/browser/ui/views/apps/native_app_window_views.cc |
index e321c7751fe35a8bed5ec388f61bf52d7dbe9e95..f2350ed8b56804082b51b2d52ebe650715ffa710 100644 |
--- a/chrome/browser/ui/views/apps/native_app_window_views.cc |
+++ b/chrome/browser/ui/views/apps/native_app_window_views.cc |
@@ -4,6 +4,7 @@ |
#include "chrome/browser/ui/views/apps/native_app_window_views.h" |
+#include "apps/ui/views/shell_window_frame_view.h" |
#include "base/command_line.h" |
#include "base/file_util.h" |
#include "base/path_service.h" |
@@ -13,7 +14,6 @@ |
#include "chrome/browser/favicon/favicon_tab_helper.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views.h" |
-#include "chrome/browser/ui/views/extensions/shell_window_frame_view.h" |
#include "chrome/browser/web_applications/web_app.h" |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/extensions/extension.h" |
@@ -40,6 +40,7 @@ |
#endif |
#if defined(USE_ASH) |
+#include "ash/ash_constants.h" |
#include "ash/screen_ash.h" |
#include "ash/shell.h" |
#include "ash/wm/custom_frame_view_ash.h" |
@@ -60,6 +61,7 @@ const int kMinPanelHeight = 100; |
const int kDefaultPanelWidth = 200; |
const int kDefaultPanelHeight = 300; |
const int kResizeInsideBoundsSize = 5; |
+const int kResizeAreaCornerSize = 16; |
struct AcceleratorMapping { |
ui::KeyboardCode keycode; |
@@ -297,6 +299,36 @@ void NativeAppWindowViews::InitializePanelWindow( |
#endif |
} |
+bool NativeAppWindowViews::ShouldUseChromeStyleFrame() const { |
+ return !CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kAppsUseNativeFrame) || frameless_; |
+} |
+ |
+apps::ShellWindowFrameView* NativeAppWindowViews::CreateShellWindowFrameView() { |
+ // By default the user can resize the window from slightly inside the bounds. |
+ int resize_inside_bounds_size = kResizeInsideBoundsSize; |
+ int resize_outside_bounds_size = 0; |
+ int resize_outside_scale_for_touch = 1; |
+ int resize_area_corner_size = kResizeAreaCornerSize; |
+#if defined(USE_ASH) |
+ // For Aura windows on the Ash desktop the sizes are different and the user |
+ // can resize the window from slightly outside the bounds as well. |
+ if (chrome::IsNativeWindowInAsh(window_->GetNativeWindow())) { |
+ resize_inside_bounds_size = ash::kResizeInsideBoundsSize; |
+ resize_outside_bounds_size = ash::kResizeOutsideBoundsSize; |
+ resize_outside_scale_for_touch = ash::kResizeOutsideBoundsScaleForTouch; |
+ resize_area_corner_size = ash::kResizeAreaCornerSize; |
+ } |
+#endif |
+ apps::ShellWindowFrameView* frame_view = new apps::ShellWindowFrameView(this); |
+ frame_view->Init(window_, |
+ resize_inside_bounds_size, |
+ resize_outside_bounds_size, |
+ resize_outside_scale_for_touch, |
+ resize_area_corner_size); |
+ return frame_view; |
+} |
+ |
// ui::BaseWindow implementation. |
bool NativeAppWindowViews::IsActive() const { |
@@ -423,8 +455,12 @@ bool NativeAppWindowViews::IsAlwaysOnTop() const { |
} |
} |
+bool NativeAppWindowViews::IsFrameless() const { |
+ return frameless_; |
+} |
+ |
gfx::Insets NativeAppWindowViews::GetFrameInsets() const { |
- if (frameless()) |
+ if (frameless_) |
return gfx::Insets(); |
// The pretend client_bounds passed in need to be large enough to ensure that |
@@ -535,11 +571,6 @@ void NativeAppWindowViews::OnViewWasResized() { |
OnPositionRequiresUpdate()); |
} |
-bool NativeAppWindowViews::ShouldUseChromeStyleFrame() const { |
- return !CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kAppsUseNativeFrame) || frameless_; |
-} |
- |
// WidgetDelegate implementation. |
void NativeAppWindowViews::OnWidgetMove() { |
@@ -627,11 +658,8 @@ views::NonClientFrameView* NativeAppWindowViews::CreateNonClientFrameView( |
} |
} |
#endif |
- if (ShouldUseChromeStyleFrame()) { |
- ShellWindowFrameView* frame_view = new ShellWindowFrameView(this); |
- frame_view->Init(window_); |
- return frame_view; |
- } |
+ if (ShouldUseChromeStyleFrame()) |
+ return CreateShellWindowFrameView(); |
return views::WidgetDelegateView::CreateNonClientFrameView(widget); |
} |
@@ -795,6 +823,10 @@ void NativeAppWindowViews::UpdateDraggableRegions( |
OnViewWasResized(); |
} |
+SkRegion* NativeAppWindowViews::GetDraggableRegion() { |
+ return draggable_region_.get(); |
+} |
+ |
void NativeAppWindowViews::HandleKeyboardEvent( |
const content::NativeWebKeyboardEvent& event) { |
unhandled_keyboard_event_handler_.HandleKeyboardEvent(event, |