X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6b1eedc1bb6ed83afb7a9bed4ea6fa204adbd50f..37ddd6ea64d7faae1201740ea5f6eb7050189611:/src/gtk/menu.cpp diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 5511b9bae6..e0f10d8e70 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -94,6 +94,8 @@ void wxMenuBar::Init(size_t n, wxMenu *menus[], const wxString titles[], long st ApplyWidgetStyle(); #endif // wxUSE_LIBHILDON/!wxUSE_LIBHILDON + g_object_ref(m_widget); + for (size_t i = 0; i < n; ++i ) Append(menus[i], titles[i]); } @@ -120,7 +122,7 @@ wxMenuBar::~wxMenuBar() static void wxMenubarUnsetInvokingWindow(wxMenu* menu, wxWindow* win, GtkWindow* tlw = NULL) { - menu->SetInvokingWindow( (wxWindow*) NULL ); + menu->SetInvokingWindow( NULL ); // support for native hot keys if (menu->m_accel) @@ -224,7 +226,7 @@ void wxMenuBar::Attach(wxFrame *frame) void wxMenuBar::UnsetInvokingWindow( wxWindow *win ) { - m_invokingWindow = (wxWindow*) NULL; + m_invokingWindow = NULL; wxMenuList::compatibility_iterator node = m_menus.GetFirst(); while (node) @@ -314,7 +316,7 @@ wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title) wxMenu *menuOld = Remove(pos); if ( menuOld && !Insert(pos, menu, title) ) { - return (wxMenu*) NULL; + return NULL; } // either Insert() succeeded or Remove() failed and menuOld is NULL @@ -325,7 +327,7 @@ wxMenu *wxMenuBar::Remove(size_t pos) { wxMenu *menu = wxMenuBarBase::Remove(pos); if ( !menu ) - return (wxMenu*) NULL; + return NULL; gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu->m_owner), NULL); gtk_container_remove(GTK_CONTAINER(m_menubar), menu->m_owner); @@ -408,7 +410,7 @@ wxMenuItem* wxMenuBar::FindItem( int id, wxMenu **menuForItem ) const if ( menuForItem ) { - *menuForItem = result ? result->GetMenu() : (wxMenu *)NULL; + *menuForItem = result ? result->GetMenu() : NULL; } return result; @@ -693,6 +695,16 @@ static void menu_hide(GtkWidget*, wxMenu* menu) } } +// "can_activate_accel" from menu item +extern "C" { +static gboolean can_activate_accel(GtkWidget*, guint, wxMenu* menu) +{ + menu->UpdateUI(); + // always allow our "activate" handler to be called + return true; +} +} + IMPLEMENT_DYNAMIC_CLASS(wxMenu,wxEvtHandler) void wxMenu::Init() @@ -706,7 +718,7 @@ void wxMenu::Init() g_object_ref(m_menu); gtk_object_sink(GTK_OBJECT(m_menu)); - m_owner = (GtkWidget*) NULL; + m_owner = NULL; // Tearoffs are entries, just like separators. So if we want this // menu to be a tear-off one, we just append a tearoff entry @@ -830,6 +842,8 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos) } else { + g_signal_connect(menuItem, "can_activate_accel", + G_CALLBACK(can_activate_accel), this); g_signal_connect (menuItem, "activate", G_CALLBACK(menuitem_activate), mitem);