Index: views/controls/menu/menu_controller.cc |
diff --git a/views/controls/menu/menu_controller.cc b/views/controls/menu/menu_controller.cc |
index a59caacc9ca35f20ff51b2d2618fb68650837243..1b513d104e06257d1cc2d065ff1163eda8fc523c 100644 |
--- a/views/controls/menu/menu_controller.cc |
+++ b/views/controls/menu/menu_controller.cc |
@@ -758,8 +758,15 @@ void MenuController::SetSelection(MenuItemView* menu_item, |
} |
// Notify the old path it isn't selected. |
- for (size_t i = paths_differ_at; i < current_size; ++i) |
+ MenuDelegate* current_delegate = |
+ current_path.empty() ? NULL : current_path.front()->GetDelegate(); |
+ for (size_t i = paths_differ_at; i < current_size; ++i) { |
+ if (current_delegate && |
+ current_path[i]->GetType() == MenuItemView::SUBMENU) { |
+ current_delegate->WillHideMenu(current_path[i]); |
+ } |
current_path[i]->SetSelected(false); |
+ } |
// Notify the new path it is selected. |
for (size_t i = paths_differ_at; i < new_size; ++i) |