X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6edf1107031284fdcf5e6eabc6b87a7367e28185..dae6d730a9b66f27d851a41a9c6b4fa9d77114f4:/src/gtk/menu.cpp diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 3d7ac67525..c8c37a1fcb 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -330,7 +330,7 @@ bool wxMenuBar::Append( wxMenu *menu, const wxString &title ) return GtkAppend(menu, title); } -bool wxMenuBar::GtkAppend(wxMenu *menu, const wxString& title) +bool wxMenuBar::GtkAppend(wxMenu *menu, const wxString& title, int pos) { wxString str( wxReplaceUnderscore( title ) ); @@ -362,7 +362,10 @@ bool wxMenuBar::GtkAppend(wxMenu *menu, const wxString& title) gtk_menu_item_set_submenu( GTK_MENU_ITEM(menu->m_owner), menu->m_menu ); - gtk_menu_shell_append( GTK_MENU_SHELL(m_menubar), menu->m_owner ); + if (pos == -1) + gtk_menu_shell_append( GTK_MENU_SHELL(m_menubar), menu->m_owner ); + else + gtk_menu_shell_insert( GTK_MENU_SHELL(m_menubar), menu->m_owner, pos ); gtk_signal_connect( GTK_OBJECT(menu->m_owner), "activate", GTK_SIGNAL_FUNC(gtk_menu_open_callback), @@ -396,7 +399,7 @@ bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title) // TODO - if ( !GtkAppend(menu, title) ) + if ( !GtkAppend(menu, title, (int)pos) ) return FALSE; return TRUE; @@ -797,6 +800,9 @@ wxString wxMenuItemBase::GetLabelFromText(const wxString& text) for ( const wxChar *pc = text.c_str(); *pc; pc++ ) { + if ( *pc == wxT('\t')) + break; + if ( *pc == wxT('_') ) { // GTK 1.2 escapes "xxx_xxx" to "xxx__xxx" @@ -1002,7 +1008,7 @@ wxMenu::~wxMenu() gtk_widget_destroy( m_menu ); } -bool wxMenu::GtkAppend(wxMenuItem *mitem) +bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos) { GtkWidget *menuItem; @@ -1014,8 +1020,10 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) // TODO menuItem = gtk_menu_item_new(); #endif - gtk_menu_shell_append(GTK_MENU_SHELL(m_menu), menuItem); - + if (pos == -1) + gtk_menu_shell_append(GTK_MENU_SHELL(m_menu), menuItem); + else + gtk_menu_shell_insert(GTK_MENU_SHELL(m_menu), menuItem, pos); } else if ( mitem->IsSubMenu() ) { @@ -1043,7 +1051,10 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) #endif gtk_menu_item_set_submenu( GTK_MENU_ITEM(menuItem), mitem->GetSubMenu()->m_menu ); - gtk_menu_shell_append(GTK_MENU_SHELL(m_menu), menuItem); + if (pos == -1) + gtk_menu_shell_append(GTK_MENU_SHELL(m_menu), menuItem); + else + gtk_menu_shell_insert(GTK_MENU_SHELL(m_menu), menuItem, pos); gtk_widget_show( mitem->GetSubMenu()->m_menu ); @@ -1074,7 +1085,10 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) GTK_SIGNAL_FUNC(gtk_menu_clicked_callback), (gpointer)this ); - gtk_menu_shell_append(GTK_MENU_SHELL(m_menu), menuItem); + if (pos == -1) + gtk_menu_shell_append(GTK_MENU_SHELL(m_menu), menuItem); + else + gtk_menu_shell_insert(GTK_MENU_SHELL(m_menu), menuItem, pos); #else menuItem = gtk_pixmap_menu_item_new (); @@ -1123,7 +1137,10 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) GTK_SIGNAL_FUNC(gtk_menu_clicked_callback), (gpointer)this ); - gtk_menu_append( GTK_MENU(m_menu), menuItem ); + if (pos == -1) + gtk_menu_append( GTK_MENU(m_menu), menuItem ); + else + gtk_menu_insert( GTK_MENU(m_menu), menuItem, pos ); gtk_widget_show( menuItem ); #endif @@ -1248,7 +1265,10 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) GTK_SIGNAL_FUNC(gtk_menu_clicked_callback), (gpointer)this ); - gtk_menu_shell_append(GTK_MENU_SHELL(m_menu), menuItem); + if (pos == -1) + gtk_menu_shell_append(GTK_MENU_SHELL(m_menu), menuItem); + else + gtk_menu_shell_insert(GTK_MENU_SHELL(m_menu), menuItem, pos); } guint accel_key; @@ -1308,7 +1328,7 @@ wxMenuItem* wxMenu::DoInsert(size_t pos, wxMenuItem *item) return NULL; // TODO - if ( !GtkAppend(item) ) + if ( !GtkAppend(item, (int)pos) ) return NULL; return item;