| Index: ui/views/controls/menu/menu_item_view.cc
|
| diff --git a/ui/views/controls/menu/menu_item_view.cc b/ui/views/controls/menu/menu_item_view.cc
|
| index 97f8a8f2b66dcaab2c0ef964acb9f5392856878b..be8b87d6a3f151177ef7a9fa4598d3e269362789 100644
|
| --- a/ui/views/controls/menu/menu_item_view.cc
|
| +++ b/ui/views/controls/menu/menu_item_view.cc
|
| @@ -237,7 +237,7 @@ MenuItemView* MenuItemView::AddMenuItemAt(
|
| DCHECK_NE(type, EMPTY);
|
| DCHECK_LE(0, index);
|
| if (!submenu_)
|
| - CreateSubmenu();
|
| + submenu_ = CreateSubmenu();
|
| DCHECK_GE(submenu_->child_count(), index);
|
| if (type == SEPARATOR) {
|
| submenu_->AddChildViewAt(new MenuSeparator(this, separator_style), index);
|
| @@ -252,8 +252,8 @@ MenuItemView* MenuItemView::AddMenuItemAt(
|
| item->SetMinorText(minor_text);
|
| if (!icon.isNull())
|
| item->SetIcon(icon);
|
| - if (type == SUBMENU)
|
| - item->CreateSubmenu();
|
| + if (type == SUBMENU && !item->HasSubmenu())
|
| + item->submenu_ = CreateSubmenu();
|
| if (GetDelegate() && !GetDelegate()->IsCommandVisible(item_id))
|
| item->SetVisible(false);
|
| submenu_->AddChildViewAt(item, index);
|
| @@ -331,9 +331,7 @@ MenuItemView* MenuItemView::AppendMenuItemImpl(
|
| }
|
|
|
| SubmenuView* MenuItemView::CreateSubmenu() {
|
| - if (!submenu_)
|
| - submenu_ = new SubmenuView(this);
|
| - return submenu_;
|
| + return new SubmenuView(this);
|
| }
|
|
|
| bool MenuItemView::HasSubmenu() const {
|
| @@ -666,7 +664,8 @@ void MenuItemView::PrepareForRun(bool is_first_menu,
|
| DCHECK(!parent_menu_item_);
|
|
|
| // Force us to have a submenu.
|
| - CreateSubmenu();
|
| + if (!submenu_)
|
| + submenu_ = CreateSubmenu();
|
| actual_menu_position_ = requested_menu_position_;
|
| canceled_ = false;
|
|
|
|
|