]> git.saurik.com Git - wxWidgets.git/commitdiff
Separate label with wx mnemonics (&) and with gtk mnemonics (_) into m_text and m_gtk...
authorRobert Roebling <robert@roebling.de>
Mon, 2 Jun 2008 21:46:29 +0000 (21:46 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 2 Jun 2008 21:46:29 +0000 (21:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53958 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/menuitem.h
src/gtk/menu.cpp

index dbc24b2d885577fb96779ca66363d1a31baab1e7..bc5c7a8fc382d60c11f8567d890a60f49e5f94fb 100644 (file)
@@ -29,7 +29,6 @@ public:
 
     // implement base class virtuals
     virtual void SetItemLabel( const wxString& str );
-    virtual wxString GetItemLabel() const;
     virtual void Enable( bool enable = true );
     virtual void Check( bool check = true );
     virtual bool IsChecked() const;
@@ -48,6 +47,8 @@ public:
     // and in the hotkey which is used to set given pointer
     static wxString GTKProcessMenuItemLabel(const wxString& str, wxString *hotKey);
 
+    wxString GetGtkItemLabel() { return m_gtkText; }
+
 #if WXWIN_COMPATIBILITY_2_8
     // compatibility only, don't use in new code
     wxDEPRECATED(
@@ -68,6 +69,7 @@ private:
     // style to GTK+ and is called from ctor and SetText()
     void DoSetText(const wxString& text);
 
+    wxString  m_gtkText; // m_text after conversion to GTK mnemonics
     wxString  m_hotKey;
     wxBitmap  m_bitmap; // Bitmap for menuitem, if any
 
index 679ca8785970d698f323c0a6352afc7ddfaee668..5bb7845a009017bf3af885ea62427bcf917e7b96 100644 (file)
@@ -642,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 )
@@ -702,7 +655,6 @@ 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 = m_hotKey;    // Store the old hotkey in Ctrl-foo format
@@ -719,7 +671,7 @@ void wxMenuItem::SetItemLabel( const wxString& str )
     if (m_menuItem)
     {
         // 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?"));
@@ -836,8 +788,8 @@ 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
@@ -989,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;
@@ -1011,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());