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

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

Issue 24647003: Redesign of the avatar menu button. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix RTL button Created 7 years, 3 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 839b14c86d651c4f6d46bb5b5138266fd3cdb18c..0a396cfbb02a1728341065e752f1249f37191512 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
@@ -4,6 +4,7 @@
#include "chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h"
+#include "chrome/browser/profiles/profiles_state.h"
#include "ui/gfx/font.h"
#include "ui/views/controls/button/image_button.h"
#include "ui/views/controls/label.h"
@@ -49,6 +50,9 @@ const int kAvatarLeftSpacing = 2;
// Space between the right edge of the avatar and the tabstrip.
const int kAvatarRightSpacing = -4;
+// How far the new avatar button is from the left of the minimize button.
+const int kNewAvatarButtonOffset = 5;
+
// In restored mode, the New Tab button isn't at the same height as the caption
// buttons, but the space will look cluttered if it actually slides under them,
// so we stop it when the gap between the two is down to 5 px.
@@ -101,7 +105,8 @@ OpaqueBrowserFrameViewLayout::OpaqueBrowserFrameViewLayout(
window_icon_(NULL),
window_title_(NULL),
avatar_label_(NULL),
- avatar_button_(NULL) {
+ avatar_button_(NULL),
+ new_avatar_button_(NULL) {
trailing_buttons_.push_back(views::FRAME_BUTTON_MINIMIZE);
trailing_buttons_.push_back(views::FRAME_BUTTON_MAXIMIZE);
trailing_buttons_.push_back(views::FRAME_BUTTON_CLOSE);
@@ -130,6 +135,10 @@ gfx::Rect OpaqueBrowserFrameViewLayout::GetBoundsForTabStrip(
available_width -= trailing_button_start_;
available_width -= leading_button_start_;
+ // The new avatar button is displayed to the left of the caption area buttons.
+ if (delegate_->ShouldShowAvatar() && new_avatar_button_)
+ available_width -= new_avatar_button_->width();
Elliot Glaysher 2013/09/26 21:05:44 This shouldn't be calculated here; rather, it shou
noms (inactive) 2013/10/01 17:42:21 Done.
+
if (delegate_->GetAdditionalReservedSpaceInTabStrip())
available_width -= delegate_->GetAdditionalReservedSpaceInTabStrip();
@@ -355,7 +364,17 @@ void OpaqueBrowserFrameViewLayout::LayoutTitleBar(views::View* host) {
}
}
-void OpaqueBrowserFrameViewLayout::LayoutAvatar() {
+void OpaqueBrowserFrameViewLayout::LayoutNewStyleAvatar() {
Elliot Glaysher 2013/09/26 21:05:44 Since the new avatar menu looks like a caption but
noms (inactive) 2013/10/01 17:42:21 I've used the has_trailing_buttons_ boolean that g
Elliot Glaysher 2013/10/01 18:12:56 Yeap! "close:minimize" is the default button layou
noms (inactive) 2013/10/03 19:30:14 After offline conversation, I've made it so that t
+ gfx::Size label_size = new_avatar_button_->GetPreferredSize();
+ int caption_y = CaptionButtonY(false);
+ new_avatar_button_->SetBounds(
+ minimize_button_->x() - label_size.width() - kNewAvatarButtonOffset,
+ caption_y,
+ label_size.width(),
+ caption_y + kCaptionButtonHeightWithPadding);
Elliot Glaysher 2013/09/26 21:05:44 This position calculation is wrong. You can't posi
noms (inactive) 2013/10/01 17:42:21 Done.
+}
+
+void OpaqueBrowserFrameViewLayout::LayoutIncognitoAvatar() {
// 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.
@@ -372,30 +391,38 @@ void OpaqueBrowserFrameViewLayout::LayoutAvatar() {
delegate_->ShouldShowAvatar() ? (avatar_bottom - avatar_y) : 0);
if (avatar_button_) {
avatar_button_->SetBoundsRect(avatar_bounds_);
Elliot Glaysher 2013/09/26 21:05:44 If you're pulling out the code block after this (n
noms (inactive) 2013/10/01 17:42:21 I don't actually know what I was thinking when I s
+ }
+}
- if (avatar_label_) {
- // Space between the bottom of the avatar and the bottom of the avatar
- // label.
- const int kAvatarLabelBottomSpacing = 3;
- gfx::Size label_size = avatar_label_->GetPreferredSize();
- // The x-position of the avatar label should be slightly to the left of
- // the avatar menu button. Therefore we use the |leading_button_start_|
- // value directly.
- gfx::Rect label_bounds(
- leading_button_start_,
- avatar_bottom - kAvatarLabelBottomSpacing - label_size.height(),
- label_size.width(),
- delegate_->ShouldShowAvatar() ? label_size.height() : 0);
- avatar_label_->SetBoundsRect(label_bounds);
- leading_button_start_ += label_size.width();
- } else {
- leading_button_start_ += kAvatarLeftSpacing + incognito_icon.width();
- }
+void OpaqueBrowserFrameViewLayout::LayoutAvatar() {
+ LayoutIncognitoAvatar();
+ gfx::ImageSkia incognito_icon = delegate_->GetOTRAvatarIcon();
- // 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_ += kAvatarLeftSpacing + incognito_icon.width();
+ int avatar_bottom = GetTabStripInsetsTop(false) +
+ delegate_->GetTabStripHeight() - kAvatarBottomSpacing;
+
+ if (avatar_label_) {
+ // Space between the bottom of the avatar and the bottom of the avatar
+ // label.
+ const int kAvatarLabelBottomSpacing = 3;
+ gfx::Size label_size = avatar_label_->GetPreferredSize();
+ // The x-position of the avatar label should be slightly to the left of
+ // the avatar menu button. Therefore we use the |leading_button_start_|
+ // value directly.
+ gfx::Rect label_bounds(
+ leading_button_start_,
+ avatar_bottom - kAvatarLabelBottomSpacing - label_size.height(),
+ label_size.width(),
+ delegate_->ShouldShowAvatar() ? label_size.height() : 0);
+ avatar_label_->SetBoundsRect(label_bounds);
+ leading_button_start_ += label_size.width();
+ } else {
+ leading_button_start_ += kAvatarLeftSpacing + incognito_icon.width();
}
+
+ // 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_ += kAvatarLeftSpacing + incognito_icon.width();
}
void OpaqueBrowserFrameViewLayout::ConfigureButton(
@@ -560,6 +587,9 @@ void OpaqueBrowserFrameViewLayout::SetView(int id, views::View* view) {
case VIEW_ID_AVATAR_BUTTON:
avatar_button_ = view;
break;
+ case VIEW_ID_NEW_AVATAR_BUTTON:
+ new_avatar_button_ = view;
+ break;
default:
NOTIMPLEMENTED() << "Unknown view id " << id;
break;
@@ -586,7 +616,14 @@ void OpaqueBrowserFrameViewLayout::Layout(views::View* host) {
// on the trailing side.
leading_button_start_++;
- LayoutAvatar();
+ if (profiles::IsNewProfileManagementEnabled()) {
+ if (delegate_->IsOffTheRecord() && !delegate_->IsGuestSession())
+ LayoutIncognitoAvatar();
+ else
+ LayoutNewStyleAvatar();
+ } else {
+ LayoutAvatar();
+ }
client_view_bounds_ = CalculateClientAreaBounds(
host->width(), host->height());

Powered by Google App Engine
This is Rietveld 408576698