]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/menu.cpp
Found bug that skrewed up display wrt horizontal
[wxWidgets.git] / src / gtk / menu.cpp
index 573be47fd8e0a0b2e909fb8c1ec7f43528fa7f29..12185fcd39a2cc2dd809d405a2c44f5f6972ee0e 100644 (file)
@@ -317,6 +317,9 @@ bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title)
     if ( !GtkAppend(menu, title) )
         return FALSE;
 
+    if (pos+1 >= m_menus.GetCount())
+        return TRUE;
+
     GtkMenuShell *menu_shell = GTK_MENU_SHELL(m_factory->widget);
     gpointer data = g_list_last(menu_shell->children)->data;
     menu_shell->children = g_list_remove(menu_shell->children, data);
@@ -335,9 +338,6 @@ bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title)
 
 wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title)
 {
-    if ( !wxMenuBarBase::Replace(pos, menu, title) )
-        return (wxMenu*) NULL;
-
     // remove the old item and insert a new one
     wxMenu *menuOld = Remove(pos);
     if ( menuOld && !Insert(pos, menu, title) )
@@ -641,9 +641,10 @@ wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
 #if (GTK_MINOR_VERSION > 0)
     for ( const wxChar *pc = text.c_str(); *pc; pc++ )
     {
-        if ( *pc == wxT('_') )
+        if ( *pc == wxT('_') || *pc == wxT('&') )
         {
-            // this is the escape character for GTK+ - skip it
+            // '_' is the escape character for GTK+ and '&' is the one for
+            // wxWindows - skip both of them
             continue;
         }