| Index: chrome/browser/ui/views/toolbar/wrench_menu.cc
|
| diff --git a/chrome/browser/ui/views/toolbar/wrench_menu.cc b/chrome/browser/ui/views/toolbar/wrench_menu.cc
|
| index 7c10f2940f88f8b16c6a588c122dc9d1e2978b47..c196e7129f9c5cd1801efbb72775dc4b779d3820 100644
|
| --- a/chrome/browser/ui/views/toolbar/wrench_menu.cc
|
| +++ b/chrome/browser/ui/views/toolbar/wrench_menu.cc
|
| @@ -1062,6 +1062,13 @@ bool WrenchMenu::GetAccelerator(int command_id,
|
| }
|
|
|
| void WrenchMenu::WillShowMenu(MenuItemView* menu) {
|
| + // If we're showing the root menu, we need to initialize the extension
|
| + // overflow container, because it needs to know the width of other
|
| + // children in the menu before it can size itself.
|
| + // Ideally, we'd do this earlier, but other menu sizes aren't fully set until
|
| + // after the menu is told to run.
|
| + if (menu == root_ && extension_overflow_.get())
|
| + extension_overflow_->Init(root_);
|
| if (menu == bookmark_menu_)
|
| CreateBookmarkMenu();
|
| }
|
| @@ -1135,12 +1142,14 @@ void WrenchMenu::PopulateMenu(MenuItemView* parent,
|
|
|
| switch (model->GetCommandIdAt(i)) {
|
| case IDC_EXTENSIONS_OVERFLOW_MENU: {
|
| - scoped_ptr<ExtensionToolbarMenuView> extension_toolbar(
|
| - new ExtensionToolbarMenuView(browser_, this));
|
| - if (extension_toolbar->GetPreferredSize().height() > 0)
|
| - item->AddChildView(extension_toolbar.release());
|
| - else
|
| + extension_overflow_.reset(new ExtensionToolbarMenuView(browser_, this));
|
| + if (extension_overflow_->GetPreferredSize().height() > 0) {
|
| + extension_overflow_->set_owned_by_client();
|
| + item->AddChildView(extension_overflow_.get());
|
| + } else {
|
| + extension_overflow_.reset();
|
| item->SetVisible(false);
|
| + }
|
| break;
|
| }
|
|
|
|
|