Index: chrome/browser/ui/cocoa/browser_window_controller_private.mm |
diff --git a/chrome/browser/ui/cocoa/browser_window_controller_private.mm b/chrome/browser/ui/cocoa/browser_window_controller_private.mm |
index 208342012934a71c1790347faee2b018814bb934..9f2be5ed969e98067b5176a402babf512c80990c 100644 |
--- a/chrome/browser/ui/cocoa/browser_window_controller_private.mm |
+++ b/chrome/browser/ui/cocoa/browser_window_controller_private.mm |
@@ -56,6 +56,10 @@ const CGFloat kAvatarRightOffset = 4; |
// incognito badge is present. |
const CGFloat kAvatarTabStripShrink = 18; |
+// Width of the full screen icon. Used to position the NewAvatarButton to the |
+// left of the icon. |
+const CGFloat kFullscreenIconWidth = 30; |
+ |
// Insets for the location bar, used when the full toolbar is hidden. |
// TODO(viettrungluu): We can argue about the "correct" insetting; I like the |
// following best, though arguably 0 inset is better/more correct. |
@@ -315,15 +319,29 @@ willPositionSheet:(NSWindow*)sheet |
// Lay out the icognito/avatar badge because calculating the indentation on |
// the right depends on it. |
if ([self shouldShowAvatar]) { |
- NSView* avatarButton = [avatarButtonController_ view]; |
- CGFloat buttonHeight = std::min( |
- static_cast<CGFloat>(profiles::kAvatarIconHeight), tabStripHeight); |
- [avatarButton setFrameSize:NSMakeSize(NSWidth([avatarButton frame]), |
- buttonHeight)]; |
- |
- // Actually place the badge *above* |maxY|, by +2 to miss the divider. |
+ NSView* avatarButton; |
CGFloat badgeXOffset = -kAvatarRightOffset; |
- CGFloat badgeYOffset = 2 * [[avatarButton superview] cr_lineWidth]; |
+ CGFloat badgeYOffset = 0; |
+ |
+ if ([self shouldUseNewAvatarButton]) { |
+ avatarButton = [newAvatarButtonController_ view]; |
+ |
+ // The fullscreen icon is displayed to the right of the avatar button. |
+ if (![self isFullscreen]) |
+ badgeXOffset -= kFullscreenIconWidth; |
+ |
+ // Center the button vertically on the tabstrip. |
+ badgeYOffset = (tabStripHeight - [avatarButton frame].size.height) /2; |
+ } else { |
+ avatarButton = [avatarButtonController_ view]; |
+ |
+ CGFloat buttonHeight = std::min( |
+ static_cast<CGFloat>(profiles::kAvatarIconHeight), tabStripHeight); |
+ // Actually place the badge *above* |maxY|, by +2 to miss the divider. |
+ badgeYOffset = 2 * [[avatarButton superview] cr_lineWidth]; |
+ [avatarButton setFrameSize:NSMakeSize(NSWidth([avatarButton frame]), |
+ buttonHeight)]; |
+ } |
NSPoint origin = |
NSMakePoint(width - NSWidth([avatarButton frame]) + badgeXOffset, |
maxY + badgeYOffset); |
@@ -343,10 +361,19 @@ willPositionSheet:(NSWindow*)sheet |
rightIndent += -[window fullScreenButtonOriginAdjustment].x; |
} else if ([self shouldShowAvatar]) { |
rightIndent += kAvatarTabStripShrink; |
- NSButton* labelButton = [avatarButtonController_ labelButtonView]; |
+ NSButton* labelButton = nil; |
+ if (![self shouldUseNewAvatarButton]) |
+ labelButton = [avatarButtonController_ labelButtonView]; |
if (labelButton) |
rightIndent += NSWidth([labelButton frame]) + kAvatarRightOffset; |
} |
+ |
+ // If the new avatar button is displayed, we need to account for its width. |
+ if ([self shouldShowAvatar] && [self shouldUseNewAvatarButton]) { |
+ rightIndent += NSWidth([[newAvatarButtonController_ view] frame]) |
+ + kAvatarTabStripShrink; |
+ } |
+ |
[tabStripController_ setRightIndentForControls:rightIndent]; |
// Go ahead and layout the tabs. |
@@ -564,10 +591,15 @@ willPositionSheet:(NSWindow*)sheet |
// Move the incognito badge if present. |
if ([self shouldShowAvatar]) { |
- [[avatarButtonController_ view] removeFromSuperview]; |
- [[avatarButtonController_ view] setHidden:YES]; // Will be shown in layout. |
- [[[destWindow contentView] superview] addSubview: |
- [avatarButtonController_ view]]; |
+ NSView* avatarButtonView; |
+ if ([self shouldUseNewAvatarButton]) |
+ avatarButtonView = [newAvatarButtonController_ view]; |
+ else |
+ avatarButtonView = [avatarButtonController_ view]; |
+ |
+ [avatarButtonView removeFromSuperview]; |
+ [avatarButtonView setHidden:YES]; // Will be shown in layout. |
+ [[[destWindow contentView] superview] addSubview: avatarButtonView]; |
} |
// Add the tab strip after setting the content view and moving the incognito |