Index: chrome/browser/ui/views/avatar_menu_bubble_view.cc |
=================================================================== |
--- chrome/browser/ui/views/avatar_menu_bubble_view.cc (revision 114338) |
+++ chrome/browser/ui/views/avatar_menu_bubble_view.cc (working copy) |
@@ -351,14 +351,15 @@ |
avatar_menu_model_.reset(new AvatarMenuModel( |
&g_browser_process->profile_manager()->GetProfileInfoCache(), |
this, browser_)); |
- // Build the menu for the first time. |
- OnAvatarMenuModelChanged(avatar_menu_model_.get()); |
} |
AvatarMenuBubbleView::~AvatarMenuBubbleView() { |
} |
gfx::Size AvatarMenuBubbleView::GetPreferredSize() { |
+ if (!add_profile_link_) |
+ return gfx::Size(); |
+ |
int max_width = 0; |
int total_height = 0; |
for (size_t i = 0; i < item_views_.size(); ++i) { |
@@ -431,6 +432,16 @@ |
return true; |
} |
+void AvatarMenuBubbleView::ViewHierarchyChanged(bool is_add, |
+ views::View* parent, |
+ views::View* child) { |
+ // Build the menu for the first time. |
+ if (!add_profile_link_ && is_add && child == this) |
+ OnAvatarMenuModelChanged(avatar_menu_model_.get()); |
+ |
+ views::BubbleDelegateView::ViewHierarchyChanged(is_add, parent, child); |
+} |
+ |
void AvatarMenuBubbleView::ButtonPressed(views::Button* sender, |
const views::Event& event) { |
for (size_t i = 0; i < item_views_.size(); ++i) { |
@@ -497,5 +508,7 @@ |
add_profile_link_->SetEnabledColor(SkColorSetRGB(0xe3, 0xed, 0xf6)); |
AddChildView(add_profile_link_); |
- PreferredSizeChanged(); |
+ // If the bubble has already been shown then resize and reposition the bubble. |
+ Layout(); |
+ SizeToContents(); |
} |