]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/menu.cpp
use IMPLEMENT_APP_CONSOLE and not IMPLEMENT_APP for console apps
[wxWidgets.git] / src / gtk / menu.cpp
index 55f2ac2921e5341df009bac67dbd5a8d63ea343c..679ca8785970d698f323c0a6352afc7ddfaee668 100644 (file)
@@ -607,6 +607,7 @@ wxMenuItem::wxMenuItem(wxMenu *parentMenu,
     Init(text);
 }
 
+#if WXWIN_COMPATIBILITY_2_8
 wxMenuItem::wxMenuItem(wxMenu *parentMenu,
                        int id,
                        const wxString& text,
@@ -618,10 +619,10 @@ wxMenuItem::wxMenuItem(wxMenu *parentMenu,
 {
     Init(text);
 }
+#endif
 
 void wxMenuItem::Init(const wxString& text)
 {
-    m_labelWidget = (GtkWidget *) NULL;
     m_menuItem = (GtkWidget *) NULL;
 
     DoSetText(text);
@@ -704,7 +705,7 @@ void wxMenuItem::SetItemLabel( const wxString& str )
     oldLabel.Replace(wxT("_"), wxT(""));
     wxString label1 = wxStripMenuCodes(str);
 #if wxUSE_ACCEL
-    wxString oldhotkey = GetHotKey();    // Store the old hotkey in Ctrl-foo format
+    wxString oldhotkey = m_hotKey;    // Store the old hotkey in Ctrl-foo format
     wxCharBuffer oldbuf = wxGTK_CONV_SYS( GetGtkHotKey(*this) );  // and as <control>foo
 #endif // wxUSE_ACCEL
 
@@ -712,17 +713,11 @@ void wxMenuItem::SetItemLabel( const wxString& str )
 
 #if wxUSE_ACCEL
     if (oldLabel == label1 &&
-        oldhotkey == GetHotKey())    // Make sure we can change a hotkey even if the label is unaltered
+        oldhotkey == m_hotKey)    // Make sure we can change a hotkey even if the label is unaltered
         return;
 
     if (m_menuItem)
     {
-        GtkLabel *label;
-        if (m_labelWidget)
-            label = (GtkLabel*) m_labelWidget;
-        else
-            label = GTK_LABEL( GTK_BIN(m_menuItem)->child );
-
         // stock menu items can have empty labels:
         wxString text = m_text;
         if (text.IsEmpty() && !IsSeparator())
@@ -734,7 +729,8 @@ void wxMenuItem::SetItemLabel( const wxString& str )
             text = GTKProcessMenuItemLabel(text, NULL);
         }
 
-        gtk_label_set_text_with_mnemonic( GTK_LABEL(label), wxGTK_CONV_SYS(text) );
+        GtkLabel* label = GTK_LABEL(GTK_BIN(m_menuItem)->child);
+        gtk_label_set_text_with_mnemonic(label, wxGTK_CONV_SYS(text));
     }
 
     // remove old accelerator from our parent's accelerator group, if present
@@ -829,7 +825,7 @@ wxString wxMenuItem::GTKProcessMenuItemLabel(const wxString& str, wxString *hotK
         hotKey->Empty();
         if(*pc == wxT('\t'))
         {
-            pc++;
+            ++pc;
             hotKey->assign(pc, str.end());
         }
     }
@@ -848,7 +844,7 @@ void wxMenuItem::DoSetText( const wxString& str )
 
 wxAcceleratorEntry *wxMenuItem::GetAccel() const
 {
-    if ( !GetHotKey() )
+    if (m_hotKey.empty())
     {
         // nothing
         return NULL;
@@ -857,7 +853,7 @@ wxAcceleratorEntry *wxMenuItem::GetAccel() const
     // accelerator parsing code looks for them after a TAB, so insert a dummy
     // one here
     wxString label;
-    label << wxT('\t') << GetHotKey();
+    label << wxT('\t') << m_hotKey;
 
     return wxAcceleratorEntry::Create(label);
 }
@@ -1215,9 +1211,9 @@ wxMenuItem *wxMenu::DoRemove(wxMenuItem *item)
         m_prevRadio = NULL;
     }
 
-    // TODO: this code doesn't delete the item factory item and this seems
-    //       impossible as of GTK 1.2.6.
-    gtk_widget_destroy( mitem );
+    gtk_menu_item_set_submenu(GTK_MENU_ITEM(mitem), NULL);
+    gtk_widget_destroy(mitem);
+    item->SetMenuItem(NULL);
 
     return item;
 }