]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/menu.cpp
test wxLC_SINGLE_SEL flag properly
[wxWidgets.git] / src / gtk1 / menu.cpp
index 43de6948daa11bf4bb01517ec154bf9ef3387481..fa3f149dd054385613bb75c1d021055647c90e97 100644 (file)
 #include "wx/wxprec.h"
 
 #include "wx/menu.h"
-#include "wx/log.h"
-#include "wx/intl.h"
-#include "wx/app.h"
-#include "wx/bitmap.h"
+#include "wx/stockitem.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/intl.h"
+    #include "wx/log.h"
+    #include "wx/app.h"
+    #include "wx/bitmap.h"
+#endif
 
 #if wxUSE_ACCEL
     #include "wx/accel.h"
@@ -762,8 +766,16 @@ wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
     return label;
 }
 
-void wxMenuItem::SetText( const wxString& str )
+void wxMenuItem::SetText( const wxString& string )
 {
+    wxString str = string;
+    if ( str.empty() && !IsSeparator() )
+    {
+        wxASSERT_MSG(wxIsStockID(GetId()), wxT("A non-stock menu item with an empty label?"));
+        str = wxGetStockLabel(GetId(), wxSTOCK_WITH_ACCELERATOR |
+                                       wxSTOCK_WITH_MNEMONIC);
+    }
+
     // Some optimization to avoid flicker
     wxString oldLabel = m_text;
     oldLabel = wxStripMenuCodes(oldLabel);
@@ -854,8 +866,6 @@ void wxMenuItem::DoSetText( const wxString& str )
        pc++;
        m_hotKey = pc;
     }
-
-    // wxPrintf( wxT("DoSetText(): str %s m_text %s hotkey %s\n"), str.c_str(), m_text.c_str(), m_hotKey.c_str() );
 }
 
 #if wxUSE_ACCEL
@@ -868,11 +878,12 @@ wxAcceleratorEntry *wxMenuItem::GetAccel() const
         return (wxAcceleratorEntry *)NULL;
     }
 
-    // as wxGetAccelFromString() looks for TAB, insert a dummy one here
+    // accelerator parsing code looks for them after a TAB, so insert a dummy
+    // one here
     wxString label;
     label << wxT('\t') << GetHotKey();
 
-    return wxGetAccelFromString(label);
+    return wxAcceleratorEntry::Create(label);
 }
 
 #endif // wxUSE_ACCEL
@@ -984,7 +995,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos)
         text = mitem->GetText();
         const wxBitmap *bitmap = &mitem->GetBitmap();
 
-       // TODO
+        // TODO
         wxUnusedVar(bitmap);
         menuItem = gtk_menu_item_new_with_label( wxGTK_CONV( text ) );
         label = GTK_LABEL( GTK_BIN(menuItem)->child );
@@ -1233,12 +1244,10 @@ static wxString GetGtkHotKey( const wxMenuItem& item )
                 hotkey << wxT("Down" );
                 break;
             case WXK_PAGEUP:
-            case WXK_PRIOR:
-                hotkey << wxT("Prior" );
+                hotkey << wxT("PgUp" );
                 break;
             case WXK_PAGEDOWN:
-            case WXK_NEXT:
-                hotkey << wxT("Next" );
+                hotkey << wxT("PgDn" );
                 break;
             case WXK_LEFT:
                 hotkey << wxT("Left" );
@@ -1355,11 +1364,11 @@ static wxString GetGtkHotKey( const wxMenuItem& item )
             case WXK_NUMPAD_DOWN:
                 hotkey << wxT("KP_Down" );
                 break;
-            case WXK_NUMPAD_PRIOR: case WXK_NUMPAD_PAGEUP:
-                hotkey << wxT("KP_Prior" );
+            case WXK_NUMPAD_PAGEUP:
+                hotkey << wxT("KP_PgUp" );
                 break;
-            case WXK_NUMPAD_NEXT:  case WXK_NUMPAD_PAGEDOWN:
-                hotkey << wxT("KP_Next" );
+            case WXK_NUMPAD_PAGEDOWN:
+                hotkey << wxT("KP_PgDn" );
                 break;
             case WXK_NUMPAD_END:
                 hotkey << wxT("KP_End" );
@@ -1414,7 +1423,7 @@ static wxString GetGtkHotKey( const wxMenuItem& item )
                 hotkey += wxString::Format(wxT("Special%d"), code - WXK_SPECIAL1 + 1);
                 break;
           */
-                // if there are any other keys wxGetAccelFromString() may
+                // if there are any other keys wxAcceleratorEntry::Create() may
                 // return, we should process them here
 
             default:
@@ -1448,7 +1457,7 @@ static wxString GetGtkHotKey( const wxMenuItem& item )
 extern "C" WXDLLIMPEXP_CORE
 void gtk_pop_hide_callback( GtkWidget *WXUNUSED(widget), bool* is_waiting  )
 {
-    *is_waiting = FALSE;
+    *is_waiting = false;
 }
 
 WXDLLIMPEXP_CORE void SetInvokingWindow( wxMenu *menu, wxWindow* win )