Index: chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm |
diff --git a/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm b/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm |
index f5f6f26841860c5e9b896949ca3463605d5d041a..00e48cc3c52315bda0c5a352a668dfd392d11ffe 100644 |
--- a/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm |
+++ b/chrome/browser/ui/cocoa/profiles/profile_chooser_controller.mm |
@@ -715,9 +715,11 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver, |
frameOrigin:(NSPoint)frameOrigin |
action:(SEL)action; |
-// Creates an email account button with |title| and a remove icon. |
+// Creates an email account button with |title| and a remove icon. |tag| |
+// indicates which account the button refers to. |
- (NSButton*)accountButtonWithRect:(NSRect)rect |
- title:(const std::string&)title; |
+ title:(const std::string&)title |
+ tag:(int)tag; |
@end |
@@ -1337,19 +1339,19 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver, |
// Save the original email address, as the button text could be elided. |
currentProfileAccounts_[i] = accounts[i]; |
NSButton* accountButton = [self accountButtonWithRect:rect |
- title:accounts[i]]; |
- [accountButton setTag:i]; |
+ title:accounts[i] |
+ tag:i]; |
[container addSubview:accountButton]; |
rect.origin.y = NSMaxY([accountButton frame]); |
} |
// The primary account should always be listed first. |
NSButton* accountButton = [self accountButtonWithRect:rect |
- title:primaryAccount]; |
+ title:primaryAccount |
+ tag:kPrimaryProfileTag]; |
[container addSubview:accountButton]; |
[container setFrameSize:NSMakeSize(NSWidth([container frame]), |
NSMaxY([accountButton frame]))]; |
- [accountButton setTag:kPrimaryProfileTag]; |
return container.autorelease(); |
} |
@@ -1522,20 +1524,39 @@ class ActiveProfileObserverBridge : public AvatarMenuObserver, |
} |
- (NSButton*)accountButtonWithRect:(NSRect)rect |
- title:(const std::string&)title { |
+ title:(const std::string&)title |
+ tag:(int)tag { |
NSColor* backgroundColor = gfx::SkColorToCalibratedNSColor( |
profiles::kAvatarBubbleAccountsBackgroundColor); |
base::scoped_nsobject<BackgroundColorHoverButton> button( |
[[BackgroundColorHoverButton alloc] initWithFrame:rect |
imageTitleSpacing:0 |
backgroundColor:backgroundColor]); |
- |
- [button setTitle:ElideEmail(title, rect.size.width)]; |
+ ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); |
+ NSImage* defaultImage = rb->GetNativeImageNamed(IDR_CLOSE_1).AsNSImage(); |
+ CGFloat kDeleteButtonWidth = [defaultImage size].width; |
+ CGFloat availableWidth = rect.size.width - |
+ kDeleteButtonWidth - kHorizontalSpacing; |
+ [button setTitle:ElideEmail(title, availableWidth)]; |
[button setAlignment:NSLeftTextAlignment]; |
[button setBordered:NO]; |
- [button setTarget:self]; |
- [button setAction:@selector(showAccountRemovalView:)]; |
+ // Delete button. |
+ rect.origin = NSMakePoint(availableWidth, 0); |
+ rect.size.width = kDeleteButtonWidth; |
+ base::scoped_nsobject<HoverImageButton> deleteButton( |
+ [[HoverImageButton alloc] initWithFrame:rect]); |
+ [deleteButton setBordered:NO]; |
+ [deleteButton setDefaultImage:defaultImage]; |
+ [deleteButton setHoverImage:rb->GetNativeImageNamed( |
+ IDR_CLOSE_1_H).ToNSImage()]; |
+ [deleteButton setPressedImage:rb->GetNativeImageNamed( |
+ IDR_CLOSE_1_P).ToNSImage()]; |
+ [deleteButton setTarget:self]; |
+ [deleteButton setAction:@selector(showAccountRemovalView:)]; |
+ [deleteButton setTag:tag]; |
+ |
+ [button addSubview:deleteButton]; |
return button.autorelease(); |
} |