]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/wince/menuce.cpp
Fixed a long-standing issue where wxSlider controls with a hardcoded size would mispl...
[wxWidgets.git] / src / msw / wince / menuce.cpp
index c9905e452f8c48f89c5459592e4b88ccde0b9f80..8ef705abcef29c0a1149dbbc84856258d45c6b6d 100644 (file)
@@ -38,7 +38,7 @@
     #include "wx/menu.h"
 #endif //WX_PRECOMP
 
-#ifdef __SMARTPHONE__
+#if defined(__SMARTPHONE__) && defined(__WXWINCE__)
 
 #include <windows.h>
 #include <ole2.h>
@@ -48,6 +48,8 @@
 
 #include "wx/msw/wince/resources.h"
 
+#include "wx/stockitem.h"
+
 wxTopLevelWindowMSW::ButtonMenu::ButtonMenu()
 {
     m_id = wxID_ANY;
@@ -81,47 +83,50 @@ void wxTopLevelWindowMSW::ButtonMenu::SetButton(int id, const wxString& label, w
 {
     m_assigned = true;
     m_id = id;
-    m_label = label;
+    if(label.empty() && wxIsStockID(id))
+        m_label = wxGetStockLabel(id);
+    else
+        m_label = label;
     m_menu = subMenu;
 }
 
 wxMenu *wxTopLevelWindowMSW::ButtonMenu::DuplicateMenu(wxMenu *menu)
 {
-       // This is required in case of converting wxMenuBar to wxMenu in wxFrame::SetMenuBar.
-       // All submenus has to be recreated because of new owner.
+    // This is required in case of converting wxMenuBar to wxMenu in wxFrame::SetMenuBar.
+    // All submenus has to be recreated because of new owner.
 
-       wxMenu *duplication = new wxMenu;
+    wxMenu *duplication = new wxMenu;
 
-       if (menu)
-       {
+    if (menu)
+    {
         wxMenuItemList::compatibility_iterator node = menu->GetMenuItems().GetFirst();
         while (node)
-               {
-                       wxMenuItem *item = node->GetData();
-                       if (item)
-                       {
-                               wxMenu *submenu = NULL;
+        {
+            wxMenuItem *item = node->GetData();
+            if (item)
+            {
+                wxMenu *submenu = NULL;
 
-                               if(item->IsSubMenu())
-                                   submenu = DuplicateMenu( item->GetSubMenu() );
-                               else
-                                       submenu = NULL;
+                if(item->IsSubMenu())
+                    submenu = DuplicateMenu( item->GetSubMenu() );
+                else
+                    submenu = NULL;
 
-                               wxMenuItem *new_item = wxMenuItem::New(duplication, item->GetId(), item->GetLabel(), item->GetHelp(), item->GetKind(), submenu);
+                wxMenuItem *new_item = wxMenuItem::New(duplication, item->GetId(), item->GetLabel(), item->GetHelp(), item->GetKind(), submenu);
 
-                               if( item->IsCheckable() )
-                                   new_item->Check(item->IsChecked());
+                if( item->IsCheckable() )
+                    new_item->Check(item->IsChecked());
 
-                               new_item->Enable( item->IsEnabled() );
+                new_item->Enable( item->IsEnabled() );
 
-                               duplication->Append(new_item);
-                       }
+                duplication->Append(new_item);
+            }
             node = node->GetNext();
-               }
-               
-       }
+        }
+
+    }
 
-       return duplication;
+    return duplication;
 }
 
 void wxMenuToHMenu(wxMenu* in, HMENU hMenu)
@@ -189,11 +194,11 @@ void wxTopLevelWindowMSW::ReloadButton(ButtonMenu& button, UINT menuID)
     button_info.fsState = TBSTATE_ENABLED;
     wxStrcpy(buf, button.GetLabel().c_str());
     button_info.pszText = buf;
-    SendMessage(m_MenuBarHWND, TB_SETBUTTONINFO, menuID, (LPARAM) &button_info);
+    ::SendMessage(m_MenuBarHWND, TB_SETBUTTONINFO, menuID, (LPARAM) &button_info);
 
     if(button.IsMenu())
     {
-        HMENU hPopupMenu = (HMENU) SendMessage(m_MenuBarHWND, SHCMBM_GETSUBMENU, 0, menuID);
+        HMENU hPopupMenu = (HMENU) ::SendMessage(m_MenuBarHWND, SHCMBM_GETSUBMENU, 0, menuID);
         RemoveMenu(hPopupMenu, 0, MF_BYPOSITION);
         wxMenuToHMenu(button.GetMenu(), hPopupMenu);
     }
@@ -257,5 +262,5 @@ bool wxTopLevelWindowMSW::HandleCommand(WXWORD id, WXWORD WXUNUSED(cmd), WXHWND
     return false;
 }
 
-#endif // __SMARTPHONE__
+#endif // __SMARTPHONE__ && __WXWINCE__