| Index: views/controls/menu/native_menu_gtk.cc
|
| diff --git a/views/controls/menu/native_menu_gtk.cc b/views/controls/menu/native_menu_gtk.cc
|
| index b5e59c0e961ea76a73e690366b27dcac1da32696..a50b9b8275849d43fc91a0fb5a11b3aed51b74ca 100644
|
| --- a/views/controls/menu/native_menu_gtk.cc
|
| +++ b/views/controls/menu/native_menu_gtk.cc
|
| @@ -86,10 +86,15 @@ void NativeMenuGtk::RunMenuAt(const gfx::Point& point, int alignment) {
|
|
|
| DCHECK(!menu_shown_);
|
| menu_shown_ = true;
|
| + // Listen for "hide" signal so that we know when to return from the blocking
|
| + // RunMenuAt call.
|
| + gint handle_id =
|
| + g_signal_connect(G_OBJECT(menu_), "hide", G_CALLBACK(OnMenuHidden), this);
|
|
|
| // Block until menu is no longer shown by running a nested message loop.
|
| MessageLoopForUI::current()->Run(NULL);
|
|
|
| + g_signal_handler_disconnect(G_OBJECT(menu_), handle_id);
|
| menu_shown_ = false;
|
| }
|
|
|
| @@ -223,9 +228,6 @@ void NativeMenuGtk::ResetMenu() {
|
| if (menu_)
|
| gtk_widget_destroy(menu_);
|
| menu_ = gtk_menu_new();
|
| - // Listen for "hide" signal so that we know when to return from the blocking
|
| - // RunMenuAt call.
|
| - g_signal_connect(G_OBJECT(menu_), "hide", G_CALLBACK(OnMenuHidden), this);
|
| }
|
|
|
| // static
|
|
|