Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(709)

Unified Diff: ui/views/controls/menu/menu_controller.cc

Issue 2155243007: Turn Bookmark Menus Async (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove nested flag Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/views/controls/menu/menu_controller.cc
diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc
index 13d3d3510a45b4cd6a2c358c51e9ff51703bdaca..55b4691d1642fec04341e9030b37c9928bbe40be 100644
--- a/ui/views/controls/menu/menu_controller.cc
+++ b/ui/views/controls/menu/menu_controller.cc
@@ -46,6 +46,7 @@
#endif
#if defined(USE_AURA)
+#include "ui/views/controls/menu/activation_change_observer_impl.h"
#include "ui/views/controls/menu/menu_key_event_handler.h"
#endif
@@ -420,7 +421,8 @@ MenuItemView* MenuController::Run(Widget* parent,
}
}
- bool nested_menu = showing_;
+ // If we are already showing, this new menu is being nested. Such as context
+ // menus on top of normal menus.
if (showing_) {
// Only support nesting of blocking_run menus, nesting of
// blocking/non-blocking shouldn't be needed.
@@ -437,9 +439,17 @@ MenuItemView* MenuController::Run(Widget* parent,
} else {
showing_ = true;
+ if (owner_)
+ owner_->RemoveObserver(this);
+ owner_ = parent;
+ if (owner_)
+ owner_->AddObserver(this);
+
#if defined(USE_AURA)
- // Only create a MenuKeyEventHandler for non-nested menus. Nested menus will
- // use the existing one.
+ // Only create a MenuKeyEventHandler and ActivationChnageObserver for
sky 2016/08/01 21:39:45 'Chnage'->Change
jonross 2016/08/02 15:03:25 Done.
+ // non-nested menus. Nested menus will use the existing one.
+ activation_change_observer_.reset(
+ new ActivationChangeObserverImpl(this, owner_));
key_event_handler_.reset(new MenuKeyEventHandler);
#endif
}
@@ -449,12 +459,6 @@ MenuItemView* MenuController::Run(Widget* parent,
state_ = State();
UpdateInitialLocation(bounds, position, context_menu);
- if (owner_)
- owner_->RemoveObserver(this);
- owner_ = parent;
- if (owner_)
- owner_->AddObserver(this);
-
// Set the selection, which opens the initial menu.
SetSelection(root, SELECTION_OPEN_SUBMENU | SELECTION_UPDATE_IMMEDIATELY);
@@ -483,7 +487,7 @@ MenuItemView* MenuController::Run(Widget* parent,
// appears totally broken.
message_loop_depth_++;
DCHECK_LE(message_loop_depth_, 2);
- RunMessageLoop(nested_menu);
+ RunMessageLoop();
message_loop_depth_--;
if (ViewsDelegate::GetInstance())
@@ -1086,7 +1090,6 @@ void MenuController::OnWidgetDestroying(Widget* widget) {
DCHECK_EQ(owner_, widget);
owner_->RemoveObserver(this);
owner_ = NULL;
- message_loop_->ClearOwner();
}
bool MenuController::IsCancelAllTimerRunningForTest() {
@@ -1387,8 +1390,8 @@ MenuController::~MenuController() {
StopCancelAllTimer();
}
-void MenuController::RunMessageLoop(bool nested_menu) {
- message_loop_->Run(this, owner_, nested_menu);
+void MenuController::RunMessageLoop() {
+ message_loop_->Run();
}
bool MenuController::SendAcceleratorToHotTrackedView() {
@@ -2610,6 +2613,7 @@ MenuItemView* MenuController::ExitMenuRun() {
}
} else {
#if defined(USE_AURA)
+ activation_change_observer_.reset();
key_event_handler_.reset();
#endif

Powered by Google App Engine
This is Rietveld 408576698