Index: ui/base/models/simple_menu_model.cc |
=================================================================== |
--- ui/base/models/simple_menu_model.cc (revision 72573) |
+++ ui/base/models/simple_menu_model.cc (working copy) |
@@ -4,6 +4,7 @@ |
#include "ui/base/models/simple_menu_model.h" |
+#include "base/message_loop.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
#include "ui/base/l10n/l10n_util.h" |
@@ -51,7 +52,9 @@ |
//////////////////////////////////////////////////////////////////////////////// |
// SimpleMenuModel, public: |
-SimpleMenuModel::SimpleMenuModel(Delegate* delegate) : delegate_(delegate) { |
+SimpleMenuModel::SimpleMenuModel(Delegate* delegate) |
+ : delegate_(delegate), |
+ ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { |
} |
SimpleMenuModel::~SimpleMenuModel() { |
@@ -288,6 +291,15 @@ |
} |
void SimpleMenuModel::MenuClosed() { |
+ // Due to how menus work on the different platforms, ActivatedAt will be |
+ // called after this. It's more convenient for the delegate to be called |
+ // afterwards though, so post a task. |
+ MessageLoop::current()->PostTask( |
+ FROM_HERE, |
+ method_factory_.NewRunnableMethod(&SimpleMenuModel::OnMenuClosed)); |
+} |
+ |
+void SimpleMenuModel::OnMenuClosed() { |
if (delegate_) |
delegate_->MenuClosed(); |
} |