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

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

Issue 1622833002: Fix opaque frame incognito icon and tabstrip positioning. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cleanup
Patch Set: Created 4 years, 11 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: chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
index 9733c9706a4f37e39ac0e934e4b45c15e0fdef80..5807f8bb27400afcf8b74d1319e75ad836e1fe35 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/ui/views/profiles/avatar_menu_button.h"
#include "chrome/common/chrome_switches.h"
#include "components/signin/core/common/profile_management_switches.h"
+#include "ui/base/material_design/material_design_controller.h"
#include "ui/gfx/font.h"
#include "ui/views/controls/button/image_button.h"
#include "ui/views/controls/label.h"
@@ -42,9 +43,6 @@ const int kIconLeftSpacing = 2;
// There is a 4 px gap between the icon and the title text.
const int kIconTitleSpacing = 4;
-// Space between the edge of the avatar and the tabstrip.
-const int kAvatarInnerSpacing = 4;
-
// How far the new avatar button is from the closest caption button.
const int kNewAvatarButtonOffset = 5;
@@ -118,12 +116,8 @@ gfx::Rect OpaqueBrowserFrameViewLayout::GetBoundsForTabStrip(
int available_width) const {
int x = leading_button_start_ + GetLayoutInsets(AVATAR_ICON).right();
available_width -= x + NewTabCaptionSpacing() + trailing_button_start_;
- gfx::Rect bounds(x, GetTabStripInsetsTop(false), std::max(0, available_width),
+ return gfx::Rect(x, GetTabStripInsetsTop(false), std::max(0, available_width),
tabstrip_preferred_size.height());
-
- if (delegate_->ShouldShowAvatar() && !ShouldIncognitoIconBeOnRight())
- bounds.Inset(kAvatarInnerSpacing, 0, 0, 0);
- return bounds;
}
gfx::Size OpaqueBrowserFrameViewLayout::GetMinimumSize(
@@ -386,6 +380,19 @@ void OpaqueBrowserFrameViewLayout::LayoutNewStyleAvatar(views::View* host) {
void OpaqueBrowserFrameViewLayout::LayoutIncognitoIcon(views::View* host) {
const int old_button_size = leading_button_start_ + trailing_button_start_;
+ // Any buttons/icon/title were laid out based on the frame border thickness,
+ // but the tabstrip bounds need to be based on the non-client border thickness
+ // on any side where there aren't other buttons forcing a larger inset.
+ const bool md = ui::MaterialDesignController::IsModeMaterial();
+ int min_button_width = NonClientBorderThickness();
+ // In non-MD, the toolbar has a rounded corner that we don't want the tabstrip
+ // to overlap.
+ if (!md && !avatar_button_)
+ min_button_width += delegate_->GetToolbarLeadingCornerClientWidth();
+ leading_button_start_ = std::max(leading_button_start_, min_button_width);
+ // The trailing corner is a mirror of the leading one.
+ trailing_button_start_ = std::max(trailing_button_start_, min_button_width);
+
if (avatar_button_) {
const gfx::Insets insets(GetLayoutInsets(AVATAR_ICON));
const gfx::Size size(delegate_->GetOTRAvatarIcon().size());
@@ -400,8 +407,8 @@ void OpaqueBrowserFrameViewLayout::LayoutIncognitoIcon(views::View* host) {
}
const int bottom = GetTabStripInsetsTop(false) +
delegate_->GetTabStripHeight() - insets.bottom();
- int y = IsTitleBarCondensed() ?
- FrameBorderThickness(false) : (bottom - size.height());
+ const int y = (md || !IsTitleBarCondensed()) ?
+ (bottom - size.height()) : FrameBorderThickness(false);
avatar_button_->SetBounds(x, y, size.width(), bottom - y);
}
@@ -606,15 +613,9 @@ void OpaqueBrowserFrameViewLayout::Layout(views::View* host) {
LayoutWindowControls(host);
LayoutTitleBar(host);
- // We now add a single pixel to the leading spacing. We do this because the
- // avatar and tab strip start one pixel inward compared to where things start
- // on the trailing side.
- leading_button_start_++;
-
if (delegate_->IsRegularOrGuestSession())
LayoutNewStyleAvatar(host);
- else
- LayoutIncognitoIcon(host);
+ LayoutIncognitoIcon(host);
client_view_bounds_ = CalculateClientAreaBounds(
host->width(), host->height());

Powered by Google App Engine
This is Rietveld 408576698