Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2399)

Unified Diff: apps/ui/views/app_window_frame_view.cc

Issue 210363004: Linux: App windows with frame: chrome and no color are now native. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed window_ field from AppWindowFrameView. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: apps/ui/views/app_window_frame_view.cc
diff --git a/apps/ui/views/app_window_frame_view.cc b/apps/ui/views/app_window_frame_view.cc
index e1c399fe23825c0ea573ba0d8442caefc060a805..381c20632403cd929148dc3fc748a7aae91268ab 100644
--- a/apps/ui/views/app_window_frame_view.cc
+++ b/apps/ui/views/app_window_frame_view.cc
@@ -4,12 +4,12 @@
#include "apps/ui/views/app_window_frame_view.h"
-#include "apps/ui/native_app_window.h"
#include "base/strings/utf_string_conversions.h"
#include "extensions/common/draggable_region.h"
#include "grit/theme_resources.h"
#include "grit/ui_strings.h" // Accessibility names
#include "third_party/skia/include/core/SkPaint.h"
+#include "third_party/skia/include/core/SkRegion.h"
#include "ui/base/hit_test.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
@@ -37,9 +37,9 @@ namespace apps {
const char AppWindowFrameView::kViewClassName[] =
"browser/ui/views/extensions/AppWindowFrameView";
-AppWindowFrameView::AppWindowFrameView(NativeAppWindow* window)
- : window_(window),
- widget_(NULL),
+AppWindowFrameView::AppWindowFrameView()
+ : widget_(NULL),
+ draggable_region_(NULL),
close_button_(NULL),
maximize_button_(NULL),
restore_button_(NULL),
@@ -51,18 +51,22 @@ AppWindowFrameView::AppWindowFrameView(NativeAppWindow* window)
AppWindowFrameView::~AppWindowFrameView() {}
void AppWindowFrameView::Init(views::Widget* widget,
+ bool draw_frame,
const SkColor& frame_color,
+ const SkRegion* draggable_region,
int resize_inside_bounds_size,
int resize_outside_bounds_size,
int resize_outside_scale_for_touch,
int resize_area_corner_size) {
widget_ = widget;
+ draw_frame_ = draw_frame;
frame_color_ = frame_color;
+ draggable_region_ = draggable_region;
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 (!window_->IsFrameless()) {
+ if (draw_frame) {
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
close_button_ = new views::ImageButton(this);
close_button_->SetImage(
@@ -125,7 +129,7 @@ void AppWindowFrameView::Init(views::Widget* widget,
// views::NonClientFrameView implementation.
gfx::Rect AppWindowFrameView::GetBoundsForClientView() const {
- if (window_->IsFrameless() || widget_->IsFullscreen())
+ if (!draw_frame_ || widget_->IsFullscreen())
return bounds();
return gfx::Rect(
0, kCaptionHeight, width(), std::max(0, height() - kCaptionHeight));
@@ -133,7 +137,7 @@ gfx::Rect AppWindowFrameView::GetBoundsForClientView() const {
gfx::Rect AppWindowFrameView::GetWindowBoundsForClientBounds(
const gfx::Rect& client_bounds) const {
- if (window_->IsFrameless()) {
+ if (!draw_frame_) {
gfx::Rect window_bounds = client_bounds;
// Enforce minimum size (1, 1) in case that client_bounds is passed with
// empty size. This could occur when the frameless window is being
@@ -189,9 +193,8 @@ int AppWindowFrameView::NonClientHitTest(const gfx::Point& point) {
// Check for possible draggable region in the client area for the frameless
// window.
- if (window_->IsFrameless()) {
- SkRegion* draggable_region = window_->GetDraggableRegion();
- if (draggable_region && draggable_region->contains(point.x(), point.y()))
+ if (!draw_frame_) {
Matt Giuca 2014/03/27 06:39:38 This part is a bit weird. On Linux, a native windo
benwells 2014/03/27 08:53:45 Yes, only frameless windows should have draggable
Matt Giuca 2014/03/27 09:16:27 Done. Note: I did not "only set it if the window
+ if (draggable_region_ && draggable_region_->contains(point.x(), point.y()))
return HTCAPTION;
}
@@ -235,7 +238,7 @@ gfx::Size AppWindowFrameView::GetPreferredSize() {
}
void AppWindowFrameView::Layout() {
- if (window_->IsFrameless())
+ if (!draw_frame_)
return;
gfx::Size close_size = close_button_->GetPreferredSize();
const int kButtonOffsetY = 0;
@@ -282,7 +285,7 @@ void AppWindowFrameView::Layout() {
}
void AppWindowFrameView::OnPaint(gfx::Canvas* canvas) {
- if (window_->IsFrameless())
+ if (!draw_frame_)
return;
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
@@ -314,7 +317,7 @@ const char* AppWindowFrameView::GetClassName() const { return kViewClassName; }
gfx::Size AppWindowFrameView::GetMinimumSize() {
gfx::Size min_size = widget_->client_view()->GetMinimumSize();
- if (window_->IsFrameless())
+ if (!draw_frame_)
return min_size;
// Ensure we can display the top of the caption area.
@@ -346,7 +349,7 @@ gfx::Size AppWindowFrameView::GetMaximumSize() {
void AppWindowFrameView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
- DCHECK(!window_->IsFrameless());
+ DCHECK(draw_frame_);
if (sender == close_button_)
widget_->Close();
else if (sender == maximize_button_)
« no previous file with comments | « apps/ui/views/app_window_frame_view.h ('k') | chrome/browser/ui/views/apps/chrome_native_app_window_views.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698