Chromium Code Reviews| Index: chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc |
| diff --git a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc |
| index 0232e6c2544b2a32f9d4e0b00760f2d9ccaa9799..b2ce33eaaf1634da8842d259b67066a43749535d 100644 |
| --- a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc |
| +++ b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc |
| @@ -24,10 +24,13 @@ namespace { |
| int g_close_menu_delay = 300; |
| } |
| -ExtensionToolbarMenuView::ExtensionToolbarMenuView(Browser* browser, |
| - AppMenu* app_menu) |
| +ExtensionToolbarMenuView::ExtensionToolbarMenuView( |
| + Browser* browser, |
| + AppMenu* app_menu, |
| + views::MenuItemView* menu_item) |
| : browser_(browser), |
| app_menu_(app_menu), |
| + menu_item_(menu_item), |
| container_(nullptr), |
| max_height_(0), |
| toolbar_actions_bar_observer_(this), |
| @@ -124,12 +127,14 @@ void ExtensionToolbarMenuView::CloseAppMenu() { |
| void ExtensionToolbarMenuView::Redraw() { |
| // In a case where the size of the container may have changed (e.g., by a row |
| // being added or removed), we need to re-layout the menu in order to resize |
| - // the view (calling Layout() on this is insufficient because other items may |
| - // need to shift up or down). |
| - parent()->parent()->Layout(); |
|
Devlin
2016/03/02 22:45:56
This wasn't enough - it redrew all the menu items,
|
| - // The Menus layout code doesn't recursively call layout on its children like |
| - // the default View code. Explicitly layout this view. |
| + // the view. This may result in redrawing the window. Luckily, this happens |
| + // only in the case of a row being aded or removed (very rare), and |
| + // typically happens near menu initialization (rather than once the menu is |
| + // fully open). |
| Layout(); |
| + menu_item_->GetParentMenuItem()->GetSubmenu()->set_resize_open_menu(true); |
| + views::View::PreferredSizeChanged(); |
| + menu_item_->GetParentMenuItem()->GetSubmenu()->set_resize_open_menu(false); |
|
sky
2016/03/03 00:33:15
MenuController::MenuChildrenChanged is intended to
Devlin
2016/03/03 01:46:24
Ah, much nicer. Using that now.
|
| } |
| int ExtensionToolbarMenuView::start_padding() const { |