X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4a4a02acd1b6f3925c719ed25cfc7c7500ff2f61..f51723055aa4334a355a19e87bb2b478b4204d15:/src/gtk/menu.cpp?ds=inline diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 47ece481a3..a0a65e89c2 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -91,9 +91,11 @@ void wxMenuBar::Init(size_t n, wxMenu *menus[], const wxString titles[], long st PostCreation(); - ApplyWidgetStyle(); + GTKApplyWidgetStyle(); #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); @@ -1189,6 +1203,12 @@ const char *wxGetStockGtkID(wxWindowID id) #define STOCKITEM_26(wx,gtk) #endif + #if GTK_CHECK_VERSION(2,8,0) + #define STOCKITEM_28(wx,gtk) STOCKITEM(wx,gtk) + #else + #define STOCKITEM_28(wx,gtk) + #endif + #if GTK_CHECK_VERSION(2,10,0) #define STOCKITEM_210(wx,gtk) STOCKITEM(wx,gtk) #else @@ -1201,52 +1221,70 @@ const char *wxGetStockGtkID(wxWindowID id) STOCKITEM_26(wxID_ABOUT, GTK_STOCK_ABOUT) STOCKITEM(wxID_ADD, GTK_STOCK_ADD) STOCKITEM(wxID_APPLY, GTK_STOCK_APPLY) + STOCKITEM(wxID_BACKWARD, GTK_STOCK_GO_BACK) STOCKITEM(wxID_BOLD, GTK_STOCK_BOLD) + STOCKITEM(wxID_BOTTOM, GTK_STOCK_GOTO_BOTTOM) STOCKITEM(wxID_CANCEL, GTK_STOCK_CANCEL) + STOCKITEM(wxID_CDROM, GTK_STOCK_CDROM) STOCKITEM(wxID_CLEAR, GTK_STOCK_CLEAR) STOCKITEM(wxID_CLOSE, GTK_STOCK_CLOSE) + STOCKITEM(wxID_CONVERT, GTK_STOCK_CONVERT) STOCKITEM(wxID_COPY, GTK_STOCK_COPY) STOCKITEM(wxID_CUT, GTK_STOCK_CUT) STOCKITEM(wxID_DELETE, GTK_STOCK_DELETE) + STOCKITEM(wxID_DOWN, GTK_STOCK_GO_DOWN) STOCKITEM_26(wxID_EDIT, GTK_STOCK_EDIT) - STOCKITEM(wxID_FIND, GTK_STOCK_FIND) + STOCKITEM(wxID_EXECUTE, GTK_STOCK_EXECUTE) + STOCKITEM(wxID_EXIT, GTK_STOCK_QUIT) STOCKITEM_26(wxID_FILE, GTK_STOCK_FILE) - STOCKITEM(wxID_REPLACE, GTK_STOCK_FIND_AND_REPLACE) - STOCKITEM(wxID_BACKWARD, GTK_STOCK_GO_BACK) - STOCKITEM(wxID_DOWN, GTK_STOCK_GO_DOWN) + STOCKITEM(wxID_FIND, GTK_STOCK_FIND) + STOCKITEM(wxID_FIRST, GTK_STOCK_GOTO_FIRST) + STOCKITEM(wxID_FLOPPY, GTK_STOCK_FLOPPY) STOCKITEM(wxID_FORWARD, GTK_STOCK_GO_FORWARD) - STOCKITEM(wxID_UP, GTK_STOCK_GO_UP) + STOCKITEM(wxID_HARDDISK, GTK_STOCK_HARDDISK) STOCKITEM(wxID_HELP, GTK_STOCK_HELP) STOCKITEM(wxID_HOME, GTK_STOCK_HOME) STOCKITEM(wxID_INDENT, GTK_STOCK_INDENT) STOCKITEM(wxID_INDEX, GTK_STOCK_INDEX) + STOCKITEM_28(wxID_INFO, GTK_STOCK_INFO) STOCKITEM(wxID_ITALIC, GTK_STOCK_ITALIC) + STOCKITEM(wxID_JUMP_TO, GTK_STOCK_JUMP_TO) STOCKITEM(wxID_JUSTIFY_CENTER, GTK_STOCK_JUSTIFY_CENTER) STOCKITEM(wxID_JUSTIFY_FILL, GTK_STOCK_JUSTIFY_FILL) STOCKITEM(wxID_JUSTIFY_LEFT, GTK_STOCK_JUSTIFY_LEFT) STOCKITEM(wxID_JUSTIFY_RIGHT, GTK_STOCK_JUSTIFY_RIGHT) + STOCKITEM(wxID_LAST, GTK_STOCK_GOTO_LAST) + STOCKITEM(wxID_NETWORK, GTK_STOCK_NETWORK) STOCKITEM(wxID_NEW, GTK_STOCK_NEW) STOCKITEM(wxID_NO, GTK_STOCK_NO) STOCKITEM(wxID_OK, GTK_STOCK_OK) STOCKITEM(wxID_OPEN, GTK_STOCK_OPEN) STOCKITEM(wxID_PASTE, GTK_STOCK_PASTE) STOCKITEM(wxID_PREFERENCES, GTK_STOCK_PREFERENCES) - STOCKITEM(wxID_PRINT, GTK_STOCK_PRINT) STOCKITEM(wxID_PREVIEW, GTK_STOCK_PRINT_PREVIEW) + STOCKITEM(wxID_PRINT, GTK_STOCK_PRINT) STOCKITEM(wxID_PROPERTIES, GTK_STOCK_PROPERTIES) - STOCKITEM(wxID_EXIT, GTK_STOCK_QUIT) STOCKITEM(wxID_REDO, GTK_STOCK_REDO) STOCKITEM(wxID_REFRESH, GTK_STOCK_REFRESH) STOCKITEM(wxID_REMOVE, GTK_STOCK_REMOVE) + STOCKITEM(wxID_REPLACE, GTK_STOCK_FIND_AND_REPLACE) STOCKITEM(wxID_REVERT_TO_SAVED, GTK_STOCK_REVERT_TO_SAVED) STOCKITEM(wxID_SAVE, GTK_STOCK_SAVE) STOCKITEM(wxID_SAVEAS, GTK_STOCK_SAVE_AS) STOCKITEM_210(wxID_SELECTALL, GTK_STOCK_SELECT_ALL) + STOCKITEM(wxID_SELECT_COLOR, GTK_STOCK_SELECT_COLOR) + STOCKITEM(wxID_SELECT_FONT, GTK_STOCK_SELECT_FONT) + STOCKITEM(wxID_SORT_ASCENDING, GTK_STOCK_SORT_ASCENDING) + STOCKITEM(wxID_SORT_DESCENDING, GTK_STOCK_SORT_DESCENDING) + STOCKITEM(wxID_SPELL_CHECK, GTK_STOCK_SPELL_CHECK) STOCKITEM(wxID_STOP, GTK_STOCK_STOP) + STOCKITEM(wxID_STRIKETHROUGH, GTK_STOCK_STRIKETHROUGH) + STOCKITEM(wxID_TOP, GTK_STOCK_GOTO_TOP) STOCKITEM(wxID_UNDELETE, GTK_STOCK_UNDELETE) STOCKITEM(wxID_UNDERLINE, GTK_STOCK_UNDERLINE) STOCKITEM(wxID_UNDO, GTK_STOCK_UNDO) STOCKITEM(wxID_UNINDENT, GTK_STOCK_UNINDENT) + STOCKITEM(wxID_UP, GTK_STOCK_GO_UP) STOCKITEM(wxID_YES, GTK_STOCK_YES) STOCKITEM(wxID_ZOOM_100, GTK_STOCK_ZOOM_100) STOCKITEM(wxID_ZOOM_FIT, GTK_STOCK_ZOOM_FIT)