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

Unified Diff: chrome/browser/ui/views/frame/glass_browser_frame_view.cc

Issue 1412833008: Draw the same portion of the frame background behind the tabstrip in maximized (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@match_frame_alignment
Patch Set: Add comment Created 5 years, 1 month 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: chrome/browser/ui/views/frame/glass_browser_frame_view.cc
diff --git a/chrome/browser/ui/views/frame/glass_browser_frame_view.cc b/chrome/browser/ui/views/frame/glass_browser_frame_view.cc
index c4a9c0daf4416452c12f6b4bba306458dc8ff2e4..d5cbd78bbabb1163dcfd7562fec267ec41cb092f 100644
--- a/chrome/browser/ui/views/frame/glass_browser_frame_view.cc
+++ b/chrome/browser/ui/views/frame/glass_browser_frame_view.cc
@@ -105,7 +105,7 @@ gfx::Rect GlassBrowserFrameView::GetBoundsForTabStrip(
!frame()->IsMaximized()) ?
GetLayoutInsets(AVATAR_ICON).right() : 0;
const int x = incognito_bounds_.right() + offset;
- int end_x = width() - NonClientBorderThickness();
+ int end_x = width() - NonClientBorderThickness(false);
if (!base::i18n::IsRTL()) {
end_x = std::min(frame()->GetMinimizeButtonOffset(), end_x) -
(frame()->IsMaximized() ?
@@ -126,12 +126,12 @@ gfx::Rect GlassBrowserFrameView::GetBoundsForTabStrip(
}
}
}
- return gfx::Rect(x, NonClientTopBorderHeight(), std::max(0, end_x - x),
+ return gfx::Rect(x, NonClientTopBorderHeight(false), std::max(0, end_x - x),
tabstrip->GetPreferredSize().height());
}
-int GlassBrowserFrameView::GetTopInset() const {
- return GetClientAreaInsets().top();
+int GlassBrowserFrameView::GetTopInset(bool restored) const {
+ return GetClientAreaInsets(restored).top();
}
int GlassBrowserFrameView::GetThemeBackgroundXInset() const {
@@ -154,7 +154,7 @@ gfx::Size GlassBrowserFrameView::GetMinimumSize() const {
gfx::Size min_size(browser_view()->GetMinimumSize());
// Account for the client area insets.
- gfx::Insets insets = GetClientAreaInsets();
+ gfx::Insets insets = GetClientAreaInsets(false);
min_size.Enlarge(insets.width(), insets.height());
// Client area insets do not include the shadow thickness.
min_size.Enlarge(2 * kContentEdgeShadowThickness, 0);
@@ -193,7 +193,7 @@ gfx::Rect GlassBrowserFrameView::GetWindowBoundsForClientBounds(
return gfx::Rect(rect);
}
- gfx::Insets insets = GetClientAreaInsets();
+ gfx::Insets insets = GetClientAreaInsets(false);
return gfx::Rect(std::max(0, client_bounds.x() - insets.left()),
std::max(0, client_bounds.y() - insets.top()),
client_bounds.width() + insets.width(),
@@ -219,7 +219,7 @@ int GlassBrowserFrameView::NonClientHitTest(const gfx::Point& point) {
// See if we're in the sysmenu region. We still have to check the tabstrip
// first so that clicks in a tab don't get treated as sysmenu clicks.
- int nonclient_border_thickness = NonClientBorderThickness();
+ int nonclient_border_thickness = NonClientBorderThickness(false);
if (gfx::Rect(nonclient_border_thickness,
gfx::win::GetSystemMetricsInDIP(SM_CYSIZEFRAME),
gfx::win::GetSystemMetricsInDIP(SM_CXSMICON),
@@ -229,7 +229,7 @@ int GlassBrowserFrameView::NonClientHitTest(const gfx::Point& point) {
if (frame_component != HTNOWHERE)
return frame_component;
- int frame_top_border_height = FrameTopBorderHeight();
+ int frame_top_border_height = FrameTopBorderHeight(false);
// We want the resize corner behavior to apply to the kResizeCornerWidth
// pixels at each end of the top and bottom edges. Because |point|'s x
// coordinate is based on the DWM-inset portion of the window (so, it's 0 at
@@ -307,16 +307,16 @@ int GlassBrowserFrameView::FrameBorderThickness() const {
0 : gfx::win::GetSystemMetricsInDIP(SM_CXSIZEFRAME);
}
-int GlassBrowserFrameView::FrameTopBorderHeight() const {
+int GlassBrowserFrameView::FrameTopBorderHeight(bool restored) const {
// We'd like to use FrameBorderThickness() here, but the maximized Aero glass
// frame has a 0 frame border around most edges and a CYSIZEFRAME-thick border
// at the top (see AeroGlassFrame::OnGetMinMaxInfo()).
- return frame()->IsFullscreen() ?
+ return (frame()->IsFullscreen() && !restored) ?
0 : gfx::win::GetSystemMetricsInDIP(SM_CYSIZEFRAME);
}
-int GlassBrowserFrameView::NonClientBorderThickness() const {
- if (frame()->IsMaximized() || frame()->IsFullscreen())
+int GlassBrowserFrameView::NonClientBorderThickness(bool restored) const {
+ if ((frame()->IsMaximized() || frame()->IsFullscreen()) && !restored)
return 0;
return (base::win::GetVersion() <= base::win::VERSION_WIN8_1)
@@ -324,11 +324,11 @@ int GlassBrowserFrameView::NonClientBorderThickness() const {
: kNonClientBorderThicknessWin10;
}
-int GlassBrowserFrameView::NonClientTopBorderHeight() const {
- if (frame()->IsFullscreen())
+int GlassBrowserFrameView::NonClientTopBorderHeight(bool restored) const {
+ if (frame()->IsFullscreen() && !restored)
return 0;
- const int top = FrameTopBorderHeight();
+ const int top = FrameTopBorderHeight(restored);
// The tab top inset is equal to the height of any shadow region above the
// tabs, plus a 1 px top stroke. In maximized mode, we want to push the
// shadow region off the top of the screen but leave the top stroke.
@@ -337,7 +337,7 @@ int GlassBrowserFrameView::NonClientTopBorderHeight() const {
// so that the region above the tab's hit-test zone matches) versus the shadow
// thickness.
const int exclusion = GetLayoutConstant(TAB_TOP_EXCLUSION_HEIGHT);
- return frame()->IsMaximized() ?
+ return (frame()->IsMaximized() && !restored) ?
(top - GetLayoutInsets(TAB).top() + 1) :
(top + kNonClientRestoredExtraThickness - exclusion);
}
@@ -367,7 +367,7 @@ void GlassBrowserFrameView::PaintToolbarBackground(gfx::Canvas* canvas) {
dest_y += kPreMDToolbarTopEdgeExclusion;
canvas->TileImageInt(
*theme_toolbar, x + GetThemeBackgroundXInset(),
- dest_y - GetTopInset() + Tab::GetYOffsetForActiveTabBackground(),
+ dest_y - GetTopInset(false) + Tab::GetYOffsetForActiveTabBackground(),
x, dest_y, w, theme_toolbar->height());
// Toolbar edges.
@@ -437,7 +437,7 @@ void GlassBrowserFrameView::PaintRestoredClientEdge(gfx::Canvas* canvas) {
browser_view()->GetToolbarBounds().y() +
tp->GetImageSkiaNamed(IDR_CONTENT_TOP_LEFT_CORNER)->height();
int client_area_bottom =
- std::max(client_area_top, height() - NonClientBorderThickness());
+ std::max(client_area_top, height() - NonClientBorderThickness(false));
int client_area_height = client_area_bottom - client_area_top;
// Draw the client edge images.
@@ -502,7 +502,7 @@ void GlassBrowserFrameView::LayoutNewStyleAvatar() {
// To match both of these, we size the button as if it's always the extra one
// pixel in height, then we place it at the correct position in restored mode,
// or one pixel above the top of the screen in maximized mode.
- int button_y = frame()->IsMaximized() ? (FrameTopBorderHeight() - 1) : 1;
+ int button_y = frame()->IsMaximized() ? (FrameTopBorderHeight(false) - 1) : 1;
new_avatar_button()->SetBounds(
button_x,
button_y,
@@ -521,18 +521,18 @@ void GlassBrowserFrameView::LayoutIncognitoIcon() {
// another layout call after the browser view has a widget anyway.
if (browser_view()->GetWidget())
size = browser_view()->GetOTRAvatarIcon().size();
- int x = NonClientBorderThickness();
+ int x = NonClientBorderThickness(false);
// In RTL, the icon needs to start after the caption buttons.
if (base::i18n::IsRTL()) {
x = width() - frame()->GetMinimizeButtonOffset() +
(new_avatar_button() ?
(new_avatar_button()->width() + kNewAvatarButtonOffset) : 0);
}
- const int bottom =
- GetTopInset() + browser_view()->GetTabStripHeight() - insets.bottom();
+ const int bottom = GetTopInset(false) + browser_view()->GetTabStripHeight() -
+ insets.bottom();
const int y = (ui::MaterialDesignController::IsModeMaterial() ||
!frame()->IsMaximized()) ?
- (bottom - size.height()) : FrameTopBorderHeight();
+ (bottom - size.height()) : FrameTopBorderHeight(false);
incognito_bounds_.SetRect(x + (avatar_button() ? insets.left() : 0), y,
avatar_button() ? size.width() : 0, bottom - y);
if (avatar_button())
@@ -543,12 +543,12 @@ void GlassBrowserFrameView::LayoutClientView() {
client_view_bounds_ = CalculateClientAreaBounds(width(), height());
}
-gfx::Insets GlassBrowserFrameView::GetClientAreaInsets() const {
+gfx::Insets GlassBrowserFrameView::GetClientAreaInsets(bool restored) const {
if (!browser_view()->IsTabStripVisible())
return gfx::Insets();
- const int top_height = NonClientTopBorderHeight();
- const int border_thickness = NonClientBorderThickness();
+ const int top_height = NonClientTopBorderHeight(restored);
+ const int border_thickness = NonClientBorderThickness(restored);
return gfx::Insets(top_height,
border_thickness,
border_thickness,
@@ -558,7 +558,7 @@ gfx::Insets GlassBrowserFrameView::GetClientAreaInsets() const {
gfx::Rect GlassBrowserFrameView::CalculateClientAreaBounds(int width,
int height) const {
gfx::Rect bounds(0, 0, width, height);
- bounds.Inset(GetClientAreaInsets());
+ bounds.Inset(GetClientAreaInsets(false));
return bounds;
}
« no previous file with comments | « chrome/browser/ui/views/frame/glass_browser_frame_view.h ('k') | chrome/browser/ui/views/frame/opaque_browser_frame_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698