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 939bcf2f2d28694edbed09b2f4aa46688e7cc310..a41c859554812872f5ed3e4a790c12c402f0a59f 100644 |
--- a/chrome/browser/ui/views/frame/glass_browser_frame_view.cc |
+++ b/chrome/browser/ui/views/frame/glass_browser_frame_view.cc |
@@ -20,7 +20,6 @@ |
#include "chrome/browser/ui/views/toolbar/toolbar_view.h" |
#include "chrome/grit/theme_resources.h" |
#include "skia/ext/image_operations.h" |
-#include "ui/base/material_design/material_design_controller.h" |
#include "ui/base/resource/resource_bundle_win.h" |
#include "ui/base/theme_provider.h" |
#include "ui/display/win/dpi.h" |
@@ -107,10 +106,7 @@ gfx::Rect GlassBrowserFrameView::GetBoundsForTabStrip( |
// In maximized RTL windows, don't let the tabstrip overlap the caption area, |
// or the alpha-blending it does will make things like the profile switcher |
// button look glitchy. |
Peter Kasting
2016/09/22 23:27:25
This comment should go away, as all the code it wa
Evan Stade
2016/09/23 00:31:07
Done.
|
- const int offset = (ui::MaterialDesignController::IsModeMaterial() || |
- !CaptionButtonsOnLeadingEdge() || !frame()->IsMaximized()) |
- ? GetLayoutInsets(AVATAR_ICON).right() |
- : 0; |
+ const int offset = GetLayoutInsets(AVATAR_ICON).right(); |
const int x = incognito_bounds_.right() + offset; |
int end_x = width() - ClientBorderThickness(false); |
if (!CaptionButtonsOnLeadingEdge()) { |
@@ -379,14 +375,9 @@ int GlassBrowserFrameView::TopAreaHeight(bool restored) const { |
// 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. |
- // Annoyingly, the pre-MD layout uses different heights for the hit-test |
- // exclusion region (which we want here, since we're trying to size the border |
- // 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() && !restored) ? |
- (top - GetLayoutInsets(TAB).top() + 1) : |
- (top + kNonClientRestoredExtraThickness - exclusion); |
+ return (frame()->IsMaximized() && !restored) |
+ ? (top - GetLayoutInsets(TAB).top() + 1) |
+ : (top + kNonClientRestoredExtraThickness); |
} |
int GlassBrowserFrameView::TitlebarHeight(bool restored) const { |
@@ -424,6 +415,7 @@ void GlassBrowserFrameView::PaintTitlebar(gfx::Canvas* canvas) const { |
} |
void GlassBrowserFrameView::PaintToolbarBackground(gfx::Canvas* canvas) const { |
+ // TODO(estade): can this be shared with OpaqueBrowserFrameView? |
Peter Kasting
2016/09/22 23:27:25
Ideally, we'd share a lot more. My goal during mo
Evan Stade
2016/09/23 00:31:07
well, they're getting pretty close, so good job!
|
gfx::Rect toolbar_bounds(browser_view()->GetToolbarBounds()); |
if (toolbar_bounds.IsEmpty()) |
return; |
@@ -440,104 +432,45 @@ void GlassBrowserFrameView::PaintToolbarBackground(gfx::Canvas* canvas) const { |
const int h = toolbar_bounds.height(); |
const SkColor separator_color = |
tp->GetColor(ThemeProperties::COLOR_TOOLBAR_BOTTOM_SEPARATOR); |
Peter Kasting
2016/09/22 23:27:24
Nit: Now that we have a lot less code, some of the
Evan Stade
2016/09/23 00:31:07
Done. I didn't move tp, x, y, or w because the onl
|
- if (ui::MaterialDesignController::IsModeMaterial()) { |
- // Background. The top stroke is drawn above the toolbar bounds, so unlike |
- // in the non-Material Design code below, we don't need to exclude any |
- // region from having the background image drawn over it. |
- if (tp->HasCustomImage(IDR_THEME_TOOLBAR)) { |
- canvas->TileImageInt(*bg, x + GetThemeBackgroundXInset(), y - bg_y, x, y, |
- w, h); |
- } else { |
- canvas->FillRect(toolbar_bounds, |
- tp->GetColor(ThemeProperties::COLOR_TOOLBAR)); |
- } |
- // Material Design has no corners to mask out. |
- |
- // Top stroke. For Material Design, the toolbar has no side strokes. |
- gfx::Rect separator_rect(x, y, w, 0); |
- gfx::ScopedCanvas scoped_canvas(canvas); |
- gfx::Rect tabstrip_bounds(GetBoundsForTabStrip(browser_view()->tabstrip())); |
- tabstrip_bounds.set_x(GetMirroredXForRect(tabstrip_bounds)); |
- canvas->sk_canvas()->clipRect(gfx::RectToSkRect(tabstrip_bounds), |
- SkRegion::kDifference_Op); |
- separator_rect.set_y(tabstrip_bounds.bottom()); |
- BrowserView::Paint1pxHorizontalLine(canvas, GetToolbarTopSeparatorColor(), |
- separator_rect, true); |
- |
- // Toolbar/content separator. |
- BrowserView::Paint1pxHorizontalLine(canvas, separator_color, toolbar_bounds, |
- true); |
+ // Background. |
+ if (tp->HasCustomImage(IDR_THEME_TOOLBAR)) { |
+ canvas->TileImageInt(*bg, x + GetThemeBackgroundXInset(), y - bg_y, x, y, w, |
+ h); |
} else { |
- // Background. The top stroke is drawn using the IDR_CONTENT_TOP_XXX |
- // images, which overlay the toolbar. The top 2 px of these images is the |
- // actual top stroke + shadow, and is partly transparent, so the toolbar |
- // background shouldn't be drawn over it. |
- const int bg_dest_y = y + kContentEdgeShadowThickness; |
- canvas->TileImageInt(*bg, x + GetThemeBackgroundXInset(), bg_dest_y - bg_y, |
- x, bg_dest_y, w, h - kContentEdgeShadowThickness); |
- |
- // On Windows 10+ where we don't draw our own window border but rather go |
- // right to the system border, the toolbar has no corners or side strokes. |
- if (base::win::GetVersion() < base::win::VERSION_WIN10) { |
- // Mask out the corners. |
- const gfx::ImageSkia* const left = |
- tp->GetImageSkiaNamed(IDR_CONTENT_TOP_LEFT_CORNER); |
- const int img_w = left->width(); |
- x -= kContentEdgeShadowThickness; |
- SkPaint paint; |
- paint.setXfermodeMode(SkXfermode::kDstIn_Mode); |
- canvas->DrawImageInt( |
- *tp->GetImageSkiaNamed(IDR_CONTENT_TOP_LEFT_CORNER_MASK), 0, 0, img_w, |
- h, x, y, img_w, h, false, paint); |
- const int right_x = |
- toolbar_bounds.right() + kContentEdgeShadowThickness - img_w; |
- canvas->DrawImageInt( |
- *tp->GetImageSkiaNamed(IDR_CONTENT_TOP_RIGHT_CORNER_MASK), 0, 0, |
- img_w, h, right_x, y, img_w, h, false, paint); |
- |
- // Corner and side strokes. |
- canvas->DrawImageInt(*left, 0, 0, img_w, h, x, y, img_w, h, false); |
- canvas->DrawImageInt( |
- *tp->GetImageSkiaNamed(IDR_CONTENT_TOP_RIGHT_CORNER), 0, 0, img_w, h, |
- right_x, y, img_w, h, false); |
- |
- x += img_w; |
- w = right_x - x; |
- } |
+ canvas->FillRect(toolbar_bounds, |
+ tp->GetColor(ThemeProperties::COLOR_TOOLBAR)); |
+ } |
- // Top stroke. |
- canvas->TileImageInt(*tp->GetImageSkiaNamed(IDR_CONTENT_TOP_CENTER), x, y, |
- w, kContentEdgeShadowThickness); |
+ // Top stroke. The toolbar has no side strokes. |
Peter Kasting
2016/09/22 23:27:25
Nit: No real need for the second sentence anymore
Evan Stade
2016/09/23 00:31:07
Done.
|
+ gfx::Rect separator_rect(x, y, w, 0); |
+ gfx::ScopedCanvas scoped_canvas(canvas); |
+ gfx::Rect tabstrip_bounds(GetBoundsForTabStrip(browser_view()->tabstrip())); |
+ tabstrip_bounds.set_x(GetMirroredXForRect(tabstrip_bounds)); |
+ canvas->sk_canvas()->clipRect(gfx::RectToSkRect(tabstrip_bounds), |
+ SkRegion::kDifference_Op); |
+ separator_rect.set_y(tabstrip_bounds.bottom()); |
+ BrowserView::Paint1pxHorizontalLine(canvas, GetToolbarTopSeparatorColor(), |
+ separator_rect, true); |
- // Toolbar/content separator. |
- toolbar_bounds.Inset(kClientEdgeThickness, h - kClientEdgeThickness, |
- kClientEdgeThickness, 0); |
- canvas->FillRect(toolbar_bounds, separator_color); |
- } |
+ // Toolbar/content separator. |
+ BrowserView::Paint1pxHorizontalLine(canvas, separator_color, toolbar_bounds, |
+ true); |
} |
void GlassBrowserFrameView::PaintClientEdge(gfx::Canvas* canvas) const { |
- // Pre-Material Design, the client edge images start below the toolbar. In MD |
- // the client edge images start at the top of the toolbar. |
+ // The client edge images start at the top of the toolbar. |
Peter Kasting
2016/09/22 23:27:25
Nit: Comment probably not needed anymore.
I would
Evan Stade
2016/09/23 00:31:07
Done.
|
gfx::Rect client_bounds = CalculateClientAreaBounds(); |
const int x = client_bounds.x(); |
- const bool md = ui::MaterialDesignController::IsModeMaterial(); |
const gfx::Rect toolbar_bounds(browser_view()->GetToolbarBounds()); |
Peter Kasting
2016/09/22 23:27:25
Nit: Inline into next statement
Evan Stade
2016/09/23 00:31:07
Done.
|
- const int y = |
- client_bounds.y() + (md ? toolbar_bounds.y() : toolbar_bounds.bottom()); |
+ const int y = client_bounds.y() + toolbar_bounds.y(); |
const int right = client_bounds.right(); |
const int bottom = std::max(y, height() - ClientBorderThickness(false)); |
- // Draw the client edge images. For non-MD, we fill the toolbar color |
- // underneath these images so they will lighten/darken it appropriately to |
- // create a "3D shaded" effect. For MD, where we want a flatter appearance, |
- // we do the filling afterwards so the user sees the unmodified toolbar color. |
+ // Draw the client edge images. |
const ui::ThemeProvider* tp = GetThemeProvider(); |
const SkColor toolbar_color = tp->GetColor(ThemeProperties::COLOR_TOOLBAR); |
Peter Kasting
2016/09/22 23:27:25
Nit: Inline below.
Evan Stade
2016/09/23 00:31:07
Done.
|
- if (!md) |
- FillClientEdgeRects(x, y, right, bottom, toolbar_color, canvas); |
- if (!md || (base::win::GetVersion() < base::win::VERSION_WIN10)) { |
+ if (base::win::GetVersion() < base::win::VERSION_WIN10) { |
const gfx::ImageSkia* const right_image = |
tp->GetImageSkiaNamed(IDR_CONTENT_RIGHT_SIDE); |
const int img_w = right_image->width(); |
@@ -554,8 +487,7 @@ void GlassBrowserFrameView::PaintClientEdge(gfx::Canvas* canvas) const { |
canvas->TileImageInt(*tp->GetImageSkiaNamed(IDR_CONTENT_LEFT_SIDE), |
x - img_w, y, img_w, height); |
} |
- if (md) |
- FillClientEdgeRects(x, y, right, bottom, toolbar_color, canvas); |
+ FillClientEdgeRects(x, y, right, bottom, toolbar_color, canvas); |
} |
void GlassBrowserFrameView::FillClientEdgeRects(int x, |
@@ -599,7 +531,6 @@ void GlassBrowserFrameView::LayoutProfileSwitcher() { |
} |
void GlassBrowserFrameView::LayoutIncognitoIcon() { |
- const bool md = ui::MaterialDesignController::IsModeMaterial(); |
const gfx::Insets insets(GetLayoutInsets(AVATAR_ICON)); |
const gfx::Size size(GetIncognitoAvatarIcon().size()); |
int x = ClientBorderThickness(false); |
@@ -609,22 +540,13 @@ void GlassBrowserFrameView::LayoutIncognitoIcon() { |
(profile_switcher_.view() ? (profile_switcher_.view()->width() + |
kProfileSwitcherButtonOffset) |
: 0); |
- } else if (!md && !profile_indicator_icon() && IsToolbarVisible() && |
- (base::win::GetVersion() < base::win::VERSION_WIN10)) { |
- // In non-MD before Win 10, the toolbar has a rounded corner that we don't |
- // want the tabstrip to overlap. |
- x += browser_view()->GetToolbarBounds().x() - kContentEdgeShadowThickness + |
- GetThemeProvider()->GetImageSkiaNamed( |
- IDR_CONTENT_TOP_LEFT_CORNER)->width(); |
} |
const int bottom = GetTopInset(false) + browser_view()->GetTabStripHeight() - |
- insets.bottom(); |
- const int y = (md || !frame()->IsMaximized()) |
- ? (bottom - size.height()) |
- : FrameTopBorderThickness(false); |
+ insets.bottom(); |
incognito_bounds_.SetRect(x + (profile_indicator_icon() ? insets.left() : 0), |
- y, profile_indicator_icon() ? size.width() : 0, |
- bottom - y); |
+ bottom - size.height(), |
+ profile_indicator_icon() ? size.width() : 0, |
+ size.height()); |
if (profile_indicator_icon()) |
profile_indicator_icon()->SetBoundsRect(incognito_bounds_); |
} |