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

Side by Side Diff: chrome/browser/ui/views/apps/glass_app_window_frame_view.cc

Issue 213743017: Remove title and icon from chrome apps native style title bars. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nicer Created 6 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/views/apps/glass_app_window_frame_view.h"
6
7 #include "apps/ui/native_app_window.h"
8 #include "ui/base/hit_test.h"
9 #include "ui/views/widget/widget.h"
10 #include "ui/views/widget/widget_delegate.h"
11
12 namespace {
13
14 const int kResizeAreaCornerSize = 16;
15
16 } // namespace
17
18 namespace apps {
19
20 const char GlassAppWindowFrameView::kViewClassName[] =
21 "browser/ui/views/extensions/GlassAppWindowFrameView";
tapted 2014/04/03 19:40:24 should this be ui/views/apps/..?
benwells 2014/04/04 06:50:43 Done.
22
23 GlassAppWindowFrameView::GlassAppWindowFrameView(NativeAppWindow* window,
24 views::Widget* widget)
25 : window_(window), widget_(widget) {}
26
27 GlassAppWindowFrameView::~GlassAppWindowFrameView() {}
28
29 gfx::Insets GlassAppWindowFrameView::GetGlassInsets() const {
30 // If 1 is not subtraced, they are too big. There is possibly some reason
tapted 2014/04/03 19:40:24 nit: subtraced -> subtracted
benwells 2014/04/04 06:50:43 Done.
31 // for that.
32 int caption_height =
33 GetSystemMetrics(SM_CYSMICON) + GetSystemMetrics(SM_CYSIZEFRAME) - 1;
34 int frame_size = GetSystemMetrics(SM_CXSIZEFRAME) - 1;
tapted 2014/04/03 19:40:24 Can GetSystemMetrics ever fail/ return 0?
benwells 2014/04/04 06:50:43 According to MSDN if it fails it will return 0. It
tapted 2014/04/04 16:15:19 cool - wild conjecture: maybe this is the explanat
35 return gfx::Insets(
36 frame_size + caption_height, frame_size, frame_size, frame_size);
37 }
38
39 gfx::Rect GlassAppWindowFrameView::GetBoundsForClientView() const {
40 if (widget_->IsFullscreen())
41 return bounds();
42
43 gfx::Insets insets = GetGlassInsets();
44 return gfx::Rect(insets.left(),
45 insets.top(),
46 std::max(0, width() - insets.left() - insets.right()),
47 std::max(0, height() - insets.top() - insets.bottom()));
48 }
49
50 gfx::Rect GlassAppWindowFrameView::GetWindowBoundsForClientBounds(
51 const gfx::Rect& client_bounds) const {
52 gfx::Insets insets = GetGlassInsets();
53 return gfx::Rect(client_bounds.x() - insets.left(),
54 client_bounds.y() - insets.top(),
55 client_bounds.width() + insets.left() + insets.right(),
56 client_bounds.height() + insets.top() + insets.bottom());
57 }
58
59 int GlassAppWindowFrameView::NonClientHitTest(const gfx::Point& point) {
60 if (widget_->IsFullscreen())
61 return HTCLIENT;
tapted 2014/04/03 19:40:24 This API isn't too familiar to me, so this might b
benwells 2014/04/04 06:50:43 It should do. This function is only called if the
62
63 if (!bounds().Contains(point))
64 return HTNOWHERE;
65
66 // Check the frame first, as we allow a small area overlapping the contents
67 // to be used for resize handles.
68 bool can_ever_resize = widget_->widget_delegate()
69 ? widget_->widget_delegate()->CanResize()
70 : false;
71 // Don't allow overlapping resize handles when the window is maximized or
72 // fullscreen, as it can't be resized in those states.
73 int resize_border = GetSystemMetrics(SM_CXSIZEFRAME);
74 int frame_component =
75 GetHTComponentForFrame(point,
76 resize_border,
77 resize_border,
78 kResizeAreaCornerSize - resize_border,
79 kResizeAreaCornerSize - resize_border,
80 can_ever_resize);
81 if (frame_component != HTNOWHERE)
82 return frame_component;
83
84 int client_component = widget_->client_view()->NonClientHitTest(point);
85 if (client_component != HTNOWHERE)
86 return client_component;
87
88 // Caption is a safe default.
89 return HTCAPTION;
90 }
91
92 void GlassAppWindowFrameView::GetWindowMask(const gfx::Size& size,
93 gfx::Path* window_mask) {
94 // We got nothing to say about no window mask.
95 }
96
97 gfx::Size GlassAppWindowFrameView::GetPreferredSize() {
98 gfx::Size pref = widget_->client_view()->GetPreferredSize();
99 gfx::Rect bounds(0, 0, pref.width(), pref.height());
100 return widget_->non_client_view()
101 ->GetWindowBoundsForClientBounds(bounds)
102 .size();
103 }
104
105 const char* GlassAppWindowFrameView::GetClassName() const {
106 return kViewClassName;
107 }
108
109 gfx::Size GlassAppWindowFrameView::GetMinimumSize() {
110 gfx::Size min_size = widget_->client_view()->GetMinimumSize();
111 gfx::Rect client_bounds = GetBoundsForClientView();
112 min_size.Enlarge(0, client_bounds.y());
tapted 2014/04/03 19:40:24 why just the y? (should x always be 0?)
tapted 2014/04/04 16:15:19 there was one last question :). But I think I grok
113 return min_size;
114 }
115
116 gfx::Size GlassAppWindowFrameView::GetMaximumSize() {
117 gfx::Size max_size = widget_->client_view()->GetMaximumSize();
118
119 // Add to the client maximum size the height of any title bar and borders.
120 gfx::Size client_size = GetBoundsForClientView().size();
121 if (max_size.width())
122 max_size.Enlarge(width() - client_size.width(), 0);
123 if (max_size.height())
124 max_size.Enlarge(0, height() - client_size.height());
125
126 return max_size;
127 }
128
129 } // namespace apps
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698