Index: chrome/browser/ui/cocoa/profiles/avatar_button_controller.mm |
diff --git a/chrome/browser/ui/cocoa/profiles/avatar_button_controller.mm b/chrome/browser/ui/cocoa/profiles/avatar_button_controller.mm |
index 93810f3afe2b1c0b23f10836a811a60c807f3217..efec9e26d994f4de61c49ccfdcf0a7787c549291 100644 |
--- a/chrome/browser/ui/cocoa/profiles/avatar_button_controller.mm |
+++ b/chrome/browser/ui/cocoa/profiles/avatar_button_controller.mm |
@@ -27,7 +27,7 @@ const CGFloat kButtonPadding = 12; |
const CGFloat kButtonDefaultPadding = 5; |
const CGFloat kButtonHeight = 27; |
const CGFloat kButtonTitleImageSpacing = 10; |
-const CGFloat kMaxButtonWidth = 120; |
+const CGFloat kMaxButtonContentWidth = 100; |
const ui::NinePartImageIds kNormalBorderImageIds = |
IMAGE_GRID(IDR_AVATAR_MAC_BUTTON_NORMAL); |
@@ -109,6 +109,7 @@ NSImage* GetImageFromResourceID(int resourceId) { |
@end |
@interface AvatarButtonController (Private) |
+- (base::string16)getElidedAvatarName; |
- (void)updateAvatarButtonAndLayoutParent:(BOOL)layoutParent; |
- (void)dealloc; |
- (void)themeDidChangeNotification:(NSNotification*)aNotification; |
@@ -177,6 +178,16 @@ NSImage* GetImageFromResourceID(int resourceId) { |
} |
} |
+- (base::string16)getElidedAvatarName { |
+ base::string16 avatarName = |
+ profiles::GetAvatarNameForProfile(browser_->profile()); |
+ int maxTextWidth = kMaxButtonContentWidth - [[button_ image] size].width; |
msw
2014/05/27 17:16:41
nit: it seems like you're decreasing the width twi
Marc Treib
2014/05/28 11:04:05
Yes: The old 120 pixels were the total width of th
|
+ return gfx::ElideText(avatarName, |
msw
2014/05/27 17:16:41
nit: will this fade/truncate and [not] add ellipsi
Marc Treib
2014/05/28 11:04:05
This adds an ellipsis. The button looks identical
|
+ gfx::FontList(gfx::Font([button_ font])), |
+ maxTextWidth, |
+ gfx::ELIDE_AT_END); |
+} |
+ |
- (void)updateAvatarButtonAndLayoutParent:(BOOL)layoutParent { |
// The button text has a black foreground and a white drop shadow for regular |
// windows, and a light text with a dark drop shadow for guest windows |
@@ -198,14 +209,21 @@ NSImage* GetImageFromResourceID(int resourceId) { |
[shadow setShadowColor:[NSColor colorWithCalibratedWhite:1.0 alpha:0.4]]; |
} |
+ base::string16 profileName = [self getElidedAvatarName]; |
+ NSString* buttonTitle = nil; |
+ if (browser_->profile()->IsManaged()) { |
+ // Add the "supervised" label after eliding the profile name, so the label |
+ // will not get elided, but will instead enlarge the button. |
+ buttonTitle = l10n_util::GetNSStringF(IDS_MANAGED_USER_NEW_AVATAR_LABEL, |
+ profileName); |
+ } else { |
+ buttonTitle = base::SysUTF16ToNSString(profileName); |
+ } |
+ |
base::scoped_nsobject<NSMutableParagraphStyle> paragraphStyle( |
[[NSMutableParagraphStyle alloc] init]); |
- [paragraphStyle setLineBreakMode:NSLineBreakByTruncatingTail]; |
[paragraphStyle setAlignment:NSLeftTextAlignment]; |
- NSString* buttonTitle = base::SysUTF16ToNSString( |
- profiles::GetAvatarNameForProfile(browser_->profile())); |
- |
base::scoped_nsobject<NSAttributedString> attributedTitle( |
[[NSAttributedString alloc] |
initWithString:buttonTitle |
@@ -215,10 +233,6 @@ NSImage* GetImageFromResourceID(int resourceId) { |
[button_ setAttributedTitle:attributedTitle]; |
[button_ sizeToFit]; |
- // Truncate the title if needed. |
- if (NSWidth([button_ bounds]) > kMaxButtonWidth) |
- [button_ setFrameSize:NSMakeSize(kMaxButtonWidth, kButtonHeight)]; |
- |
if (layoutParent) { |
// Because the width of the button might have changed, the parent browser |
// frame needs to recalculate the button bounds and redraw it. |