diff options
author | benwells@chromium.org <benwells@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-08 21:49:23 +0000 |
---|---|---|
committer | benwells@chromium.org <benwells@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-08 21:49:23 +0000 |
commit | 2b4abbd67748f3238a05ab18c87489c82c18c0fa (patch) | |
tree | 1aa6235dcc56e5060ef261e17f0fa070adc3b676 /apps | |
parent | 15e547f5c490281e8b3ff6071636f196563cde52 (diff) | |
download | chromium_src-2b4abbd67748f3238a05ab18c87489c82c18c0fa.zip chromium_src-2b4abbd67748f3238a05ab18c87489c82c18c0fa.tar.gz chromium_src-2b4abbd67748f3238a05ab18c87489c82c18c0fa.tar.bz2 |
Remove title and icon from chrome apps native style title bars.
These windows aren't meant to have titles or icons, but still need to
get a proper title as far as the OS is concerned. This means using a
custom but glass frame, similarly to how unthemed browser windows look.
BUG=339558
TEST=Try out frame:chrome app windows windows on Windows 7, 8 and XP.
Use the windows in various states (maximised, fullscreen, normal).
Make sure they work after switching in and out of aero mode.
Review URL: https://codereview.chromium.org/213743017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262516 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'apps')
-rw-r--r-- | apps/ui/views/app_window_frame_view.cc | 47 | ||||
-rw-r--r-- | apps/ui/views/app_window_frame_view.h | 34 | ||||
-rw-r--r-- | apps/ui/views/native_app_window_views.h | 3 |
3 files changed, 46 insertions, 38 deletions
diff --git a/apps/ui/views/app_window_frame_view.cc b/apps/ui/views/app_window_frame_view.cc index 5fcef42..ef4302c 100644 --- a/apps/ui/views/app_window_frame_view.cc +++ b/apps/ui/views/app_window_frame_view.cc @@ -29,8 +29,11 @@ #endif namespace { -// Height of the chrome-style caption, in pixels. + +const int kDefaultResizeInsideBoundsSize = 5; +const int kDefaultResizeAreaCornerSize = 16; const int kCaptionHeight = 25; + } // namespace namespace apps { @@ -38,36 +41,26 @@ namespace apps { const char AppWindowFrameView::kViewClassName[] = "browser/ui/views/extensions/AppWindowFrameView"; -AppWindowFrameView::AppWindowFrameView() - : widget_(NULL), - window_(NULL), +AppWindowFrameView::AppWindowFrameView(views::Widget* widget, + NativeAppWindow* window, + bool draw_frame, + const SkColor& frame_color) + : widget_(widget), + window_(window), + draw_frame_(draw_frame), + frame_color_(frame_color), close_button_(NULL), maximize_button_(NULL), restore_button_(NULL), minimize_button_(NULL), - resize_inside_bounds_size_(0), + resize_inside_bounds_size_(kDefaultResizeInsideBoundsSize), resize_outside_bounds_size_(0), - resize_area_corner_size_(0) {} + resize_area_corner_size_(kDefaultResizeAreaCornerSize) {} AppWindowFrameView::~AppWindowFrameView() {} -void AppWindowFrameView::Init(views::Widget* widget, - NativeAppWindow* window, - bool draw_frame, - const SkColor& frame_color, - int resize_inside_bounds_size, - int resize_outside_bounds_size, - int resize_outside_scale_for_touch, - int resize_area_corner_size) { - widget_ = widget; - window_ = window; - draw_frame_ = draw_frame; - frame_color_ = frame_color; - resize_inside_bounds_size_ = resize_inside_bounds_size; - resize_outside_bounds_size_ = resize_outside_bounds_size; - resize_area_corner_size_ = resize_area_corner_size; - - if (draw_frame) { +void AppWindowFrameView::Init() { + if (draw_frame_) { ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); close_button_ = new views::ImageButton(this); close_button_->SetImage( @@ -127,6 +120,14 @@ void AppWindowFrameView::Init(views::Widget* widget, } } +void AppWindowFrameView::SetResizeSizes(int resize_inside_bounds_size, + int resize_outside_bounds_size, + int resize_area_corner_size) { + resize_inside_bounds_size_ = resize_inside_bounds_size; + resize_outside_bounds_size_ = resize_outside_bounds_size; + resize_area_corner_size_ = resize_area_corner_size; +} + // views::NonClientFrameView implementation. gfx::Rect AppWindowFrameView::GetBoundsForClientView() const { diff --git a/apps/ui/views/app_window_frame_view.h b/apps/ui/views/app_window_frame_view.h index 1781476..5f15431 100644 --- a/apps/ui/views/app_window_frame_view.h +++ b/apps/ui/views/app_window_frame_view.h @@ -40,22 +40,28 @@ class AppWindowFrameView : public views::NonClientFrameView, public: static const char kViewClassName[]; - explicit AppWindowFrameView(); + // AppWindowFrameView is used to draw frames for app windows when a non + // standard frame is needed. This occurs if there is no frame needed, or if + // there is a frame color. + // If |draw_frame| is true, the view draws its own window title area and + // controls, using |frame_color|. If |draw_frame| is not true, no frame is + // drawn. + // TODO(benwells): Refactor this to split out frameless and colored frame + // views. See http://crbug.com/359432. + AppWindowFrameView(views::Widget* widget, + NativeAppWindow* window, + bool draw_frame, + const SkColor& frame_color); virtual ~AppWindowFrameView(); - // Initializes this for |widget|. Sets the number of pixels for which a click - // is interpreted as a resize for the inner and outer border of the window - // and the lower-right corner resize handle. If |draw_frame|, the view draws - // its own window title area and controls, using |frame_color| (otherwise - // |frame_color| is ignored). - void Init(views::Widget* widget, - NativeAppWindow* window, - bool draw_frame, - const SkColor& frame_color, - int resize_inside_bounds_size, - int resize_outside_bounds_size, - int resize_outside_scale_for_touch, - int resize_area_corner_size); + void Init(); + + void SetResizeSizes(int resize_inside_bounds_size, + int resize_outside_bounds_size, + int resize_area_corner_size); + int resize_inside_bounds_size() const { + return resize_inside_bounds_size_; + }; private: // views::NonClientFrameView implementation. diff --git a/apps/ui/views/native_app_window_views.h b/apps/ui/views/native_app_window_views.h index 283e7c1..47f4ba1 100644 --- a/apps/ui/views/native_app_window_views.h +++ b/apps/ui/views/native_app_window_views.h @@ -52,6 +52,8 @@ class NativeAppWindowViews : public NativeAppWindow, void Init(AppWindow* app_window, const AppWindow::CreateParams& create_params); + views::Widget* widget() { return widget_; } + void set_window_for_testing(views::Widget* window) { widget_ = window; } void set_web_view_for_testing(views::WebView* view) { web_view_ = view; } @@ -59,7 +61,6 @@ class NativeAppWindowViews : public NativeAppWindow, AppWindow* app_window() { return app_window_; } const AppWindow* app_window() const { return app_window_; } - views::Widget* widget() { return widget_; } const views::Widget* widget() const { return widget_; } views::WebView* web_view() { return web_view_; } |