diff options
Diffstat (limited to 'views/controls/menu/native_menu_gtk.cc')
-rw-r--r-- | views/controls/menu/native_menu_gtk.cc | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/views/controls/menu/native_menu_gtk.cc b/views/controls/menu/native_menu_gtk.cc index a10e130..012d2a8 100644 --- a/views/controls/menu/native_menu_gtk.cc +++ b/views/controls/menu/native_menu_gtk.cc @@ -112,11 +112,11 @@ void NativeMenuGtk::RunMenuAt(const gfx::Point& point, int alignment) { // Listen for "hide" signal so that we know when to return from the blocking // RunMenuAt call. gint hide_handle_id = - g_signal_connect(menu_, "hide", G_CALLBACK(OnMenuHiddenThunk), this); + g_signal_connect(menu_, "hide", G_CALLBACK(OnMenuHidden), this); gint move_handle_id = - g_signal_connect(menu_, "move-current", - G_CALLBACK(OnMenuMoveCurrentThunk), this); + g_signal_connect(menu_, "move-current", G_CALLBACK(OnMenuMoveCurrent), + this); // Block until menu is no longer shown by running a nested message loop. MessageLoopForUI::current()->Run(NULL); @@ -133,7 +133,7 @@ void NativeMenuGtk::RunMenuAt(const gfx::Point& point, int alignment) { } void NativeMenuGtk::CancelMenu() { - gtk_widget_hide(menu_); + NOTIMPLEMENTED(); } void NativeMenuGtk::Rebuild() { @@ -208,8 +208,9 @@ void NativeMenuGtk::RemoveMenuListener(MenuListener* listener) { //////////////////////////////////////////////////////////////////////////////// // NativeMenuGtk, private: -void NativeMenuGtk::OnMenuHidden(GtkWidget* widget) { - if (!menu_shown_) { +// static +void NativeMenuGtk::OnMenuHidden(GtkWidget* widget, NativeMenuGtk* menu) { + if (!menu->menu_shown_) { // This indicates we don't have a menu open, and should never happen. NOTREACHED(); return; @@ -218,8 +219,10 @@ void NativeMenuGtk::OnMenuHidden(GtkWidget* widget) { MessageLoop::current()->Quit(); } -void NativeMenuGtk::OnMenuMoveCurrent(GtkWidget* menu_widget, - GtkMenuDirectionType focus_direction) { +// static +void NativeMenuGtk::OnMenuMoveCurrent(GtkMenu* menu_widget, + GtkMenuDirectionType focus_direction, + NativeMenuGtk* menu) { GtkWidget* parent = GTK_MENU_SHELL(menu_widget)->parent_menu_shell; GtkWidget* menu_item = GTK_MENU_SHELL(menu_widget)->active_menu_item; GtkWidget* submenu = NULL; @@ -228,11 +231,11 @@ void NativeMenuGtk::OnMenuMoveCurrent(GtkWidget* menu_widget, } if (focus_direction == GTK_MENU_DIR_CHILD && submenu == NULL) { - GetAncestor()->menu_action_ = MENU_ACTION_NEXT; - gtk_menu_popdown(GTK_MENU(menu_widget)); + menu->GetAncestor()->menu_action_ = MENU_ACTION_NEXT; + gtk_menu_popdown(menu_widget); } else if (focus_direction == GTK_MENU_DIR_PARENT && parent == NULL) { - GetAncestor()->menu_action_ = MENU_ACTION_PREVIOUS; - gtk_menu_popdown(GTK_MENU(menu_widget)); + menu->GetAncestor()->menu_action_ = MENU_ACTION_PREVIOUS; + gtk_menu_popdown(menu_widget); } } |