]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/menu.cpp
compilation fix for PCH-less compilation after the last change
[wxWidgets.git] / src / gtk / menu.cpp
index 2dc83b61608ba2a8a8a60ded261f9d7634a083be..5bb7845a009017bf3af885ea62427bcf917e7b96 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);
@@ -641,53 +642,6 @@ wxString wxMenuItemBase::GetLabelText(const wxString& text)
     // format, not GTK+ format, so we do what the other ports do.
 
     return wxStripMenuCodes(text);
-
-#if 0
-    wxString label;
-
-    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"
-            pc++;
-            label += *pc;
-            continue;
-        }
-
-        if ( *pc == wxT('\\')  )
-        {
-            // GTK 2.0 escapes "xxx/xxx" to "xxx\/xxx"
-            pc++;
-            label += *pc;
-            continue;
-        }
-
-        if ( (*pc == wxT('&')) && (*(pc+1) != wxT('&')) )
-        {
-            // wxMSW escapes "&"
-            // "&" is doubled to indicate "&" instead of accelerator
-            continue;
-        }
-
-        label += *pc;
-    }
-
-    // wxPrintf( wxT("GetLabelText(): text %s label %s\n"), text.c_str(), label.c_str() );
-
-    return label;
-#endif
-}
-
-wxString wxMenuItem::GetItemLabel() const
-{
-    wxString label = wxConvertMnemonicsFromGTK(m_text);
-    if (!m_hotKey.IsEmpty())
-        label << "\t" << m_hotKey;
-    return label;
 }
 
 void wxMenuItem::SetItemLabel( const wxString& str )
@@ -701,10 +655,9 @@ void wxMenuItem::SetItemLabel( const wxString& str )
     // Some optimization to avoid flicker
     wxString oldLabel = m_text;
     oldLabel = wxStripMenuCodes(oldLabel);
-    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,19 +665,13 @@ 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;
+        wxString text = m_gtkText;
         if (text.IsEmpty() && !IsSeparator())
         {
             wxASSERT_MSG(isstock, wxT("A non-stock menu item with an empty label?"));
@@ -734,7 +681,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
@@ -840,15 +788,15 @@ wxString wxMenuItem::GTKProcessMenuItemLabel(const wxString& str, wxString *hotK
 // it's valid for this function to be called even if m_menuItem == NULL
 void wxMenuItem::DoSetText( const wxString& str )
 {
-    m_text.Empty();
-    m_text = GTKProcessMenuItemLabel(str, &m_hotKey);
+    m_text = str;
+    m_gtkText = GTKProcessMenuItemLabel(str, &m_hotKey);
 }
 
 #if wxUSE_ACCEL
 
 wxAcceleratorEntry *wxMenuItem::GetAccel() const
 {
-    if ( !GetHotKey() )
+    if (m_hotKey.empty())
     {
         // nothing
         return NULL;
@@ -857,7 +805,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);
 }
@@ -993,7 +941,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos)
     GtkWidget *menuItem;
 
     // cache some data used later
-    wxString text = mitem->wxMenuItemBase::GetItemLabel();
+    wxString text = mitem->GetGtkItemLabel();
     int id = mitem->GetId();
     bool isstock = wxIsStockID(id);
     const char *stockid = NULL;
@@ -1015,7 +963,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos)
         menuItem = gtk_separator_menu_item_new();
         m_prevRadio = NULL;
     }
-    else if ( mitem->GetBitmap().Ok() ||
+    else if ( mitem->GetBitmap().IsOk() ||
                 (mitem->GetKind() == wxITEM_NORMAL && isstock) )
     {
         wxBitmap bitmap(mitem->GetBitmap());
@@ -1216,7 +1164,8 @@ wxMenuItem *wxMenu::DoRemove(wxMenuItem *item)
     }
 
     gtk_menu_item_set_submenu(GTK_MENU_ITEM(mitem), NULL);
-    gtk_container_remove(GTK_CONTAINER(m_menu), mitem);
+    gtk_widget_destroy(mitem);
+    item->SetMenuItem(NULL);
 
     return item;
 }