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

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

Issue 1624773002: Clean up frame code a bit: (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resync, fix compile 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 3b18ab2e803735fea43884fd514993bb461768c9..9733c9706a4f37e39ac0e934e4b45c15e0fdef80 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
@@ -42,14 +42,6 @@ const int kIconLeftSpacing = 2;
// There is a 4 px gap between the icon and the title text.
const int kIconTitleSpacing = 4;
-// The avatar ends 2 px above the bottom of the tabstrip (which, given the
-// way the tabstrip draws its bottom edge, will appear like a 1 px gap to the
-// user).
-const int kAvatarBottomSpacing = 2;
-
-// Space between the frame border and the edge of the avatar.
-const int kAvatarOuterSpacing = 2;
-
// Space between the edge of the avatar and the tabstrip.
const int kAvatarInnerSpacing = 4;
@@ -72,14 +64,6 @@ const int kNewTabCaptionCondensedSpacing = 16;
// overrides the two previous constants.
const int kNewTabNoCaptionButtonsSpacing = 5;
-// The top 3 px of the tabstrip is shadow; in maximized mode we push this off
-// the top of the screen so the tabs appear flush against the screen edge.
-const int kTabstripTopShadowThickness = 3;
-
-// How far to indent the tabstrip from the left side of the screen when there
-// is no avatar icon.
-const int kTabStripIndent = -6;
-
#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
// Default extra space between the top of the frame and the top of the window
// caption buttons.
@@ -132,19 +116,13 @@ void OpaqueBrowserFrameViewLayout::SetButtonOrdering(
gfx::Rect OpaqueBrowserFrameViewLayout::GetBoundsForTabStrip(
const gfx::Size& tabstrip_preferred_size,
int available_width) const {
- available_width -= trailing_button_start_;
- available_width -= leading_button_start_;
-
- const int caption_spacing = NewTabCaptionSpacing();
- const int tabstrip_width = available_width - caption_spacing;
- gfx::Rect bounds(leading_button_start_, GetTabStripInsetsTop(false),
- std::max(0, tabstrip_width),
+ 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),
tabstrip_preferred_size.height());
- int leading_tabstrip_indent = kTabStripIndent;
- if (delegate_->ShouldShowAvatar() && !ShouldAvatarBeOnRight())
- leading_tabstrip_indent += kAvatarInnerSpacing;
- bounds.Inset(leading_tabstrip_indent, 0, 0, 0);
+ if (delegate_->ShouldShowAvatar() && !ShouldIncognitoIconBeOnRight())
+ bounds.Inset(kAvatarInnerSpacing, 0, 0, 0);
return bounds;
}
@@ -265,9 +243,9 @@ bool OpaqueBrowserFrameViewLayout::IsTitleBarCondensed() const {
///////////////////////////////////////////////////////////////////////////////
// OpaqueBrowserFrameView, private:
-bool OpaqueBrowserFrameViewLayout::ShouldAvatarBeOnRight() const {
- // The avatar should be shown either on the end of the left or the beginning
- // of the right depending on which side has fewer buttons.
+bool OpaqueBrowserFrameViewLayout::ShouldIncognitoIconBeOnRight() const {
+ // The incognito should be shown either on the end of the left or the
+ // beginning of the right, depending on which side has fewer buttons.
return trailing_buttons_.size() < leading_buttons_.size();
}
@@ -405,41 +383,30 @@ void OpaqueBrowserFrameViewLayout::LayoutNewStyleAvatar(views::View* host) {
kCaptionButtonHeight);
}
-void OpaqueBrowserFrameViewLayout::LayoutAvatar(views::View* host) {
- // Even though the avatar is used for both incognito and profiles we always
- // use the incognito icon to layout the avatar button. The profile icon
- // can be customized so we can't depend on its size to perform layout.
- gfx::ImageSkia incognito_icon = delegate_->GetOTRAvatarIcon();
-
- bool avatar_on_right = ShouldAvatarBeOnRight();
- int avatar_bottom = GetTabStripInsetsTop(false) +
- delegate_->GetTabStripHeight() - kAvatarBottomSpacing;
- int avatar_restored_y = avatar_bottom - incognito_icon.height();
- int avatar_x = avatar_on_right ?
- host->width() - trailing_button_start_ - kAvatarOuterSpacing -
- incognito_icon.width() :
- leading_button_start_ + kAvatarOuterSpacing;
- int avatar_y = IsTitleBarCondensed() ?
- (NonClientTopBorderHeight(false) + kTabstripTopShadowThickness) :
- avatar_restored_y;
- avatar_bounds_.SetRect(
- avatar_x,
- avatar_y,
- incognito_icon.width(),
- delegate_->ShouldShowAvatar() ? (avatar_bottom - avatar_y) : 0);
- if (avatar_button_) {
- avatar_button_->SetBoundsRect(avatar_bounds_);
+void OpaqueBrowserFrameViewLayout::LayoutIncognitoIcon(views::View* host) {
+ const int old_button_size = leading_button_start_ + trailing_button_start_;
- int edge_offset = kAvatarOuterSpacing + incognito_icon.width();
- if (avatar_on_right)
- trailing_button_start_ += edge_offset;
- else
- leading_button_start_ += edge_offset;
-
- // We just add the avatar button size to the minimum size because clicking
- // the avatar label does the same thing as clicking the avatar button.
- minimum_size_for_buttons_ += kAvatarOuterSpacing + incognito_icon.width();
+ if (avatar_button_) {
+ const gfx::Insets insets(GetLayoutInsets(AVATAR_ICON));
+ const gfx::Size size(delegate_->GetOTRAvatarIcon().size());
+ const int incognito_width = insets.left() + size.width();
+ int x;
+ if (ShouldIncognitoIconBeOnRight()) {
+ trailing_button_start_ += incognito_width;
+ x = host->width() - trailing_button_start_;
+ } else {
+ x = leading_button_start_ + insets.left();
+ leading_button_start_ += incognito_width;
+ }
+ const int bottom = GetTabStripInsetsTop(false) +
+ delegate_->GetTabStripHeight() - insets.bottom();
+ int y = IsTitleBarCondensed() ?
+ FrameBorderThickness(false) : (bottom - size.height());
+ avatar_button_->SetBounds(x, y, size.width(), bottom - y);
}
+
+ minimum_size_for_buttons_ +=
+ (leading_button_start_ + trailing_button_start_ - old_button_size);
}
void OpaqueBrowserFrameViewLayout::ConfigureButton(
@@ -647,7 +614,7 @@ void OpaqueBrowserFrameViewLayout::Layout(views::View* host) {
if (delegate_->IsRegularOrGuestSession())
LayoutNewStyleAvatar(host);
else
- LayoutAvatar(host);
+ LayoutIncognitoIcon(host);
client_view_bounds_ = CalculateClientAreaBounds(
host->width(), host->height());
« no previous file with comments | « chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h ('k') | ui/views/window/frame_background.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698