]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/wince/menuce.cpp
missing commit
[wxWidgets.git] / src / msw / wince / menuce.cpp
index 8ef705abcef29c0a1149dbbc84856258d45c6b6d..a4cf26ecc9fd640983ed40024b6404225119b341 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     28.05.2004
 // RCS-ID:      $Id$
 // Copyright:   (c) Wlodzimierz Skiba
-// License:     wxWindows licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
 // headers
 // ----------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "menuce"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
@@ -28,9 +24,7 @@
     #pragma hdrstop
 #endif
 
-#ifndef WX_PRECOMP
-    #include "wx/wx.h"
-#endif
+#if defined(__SMARTPHONE__) && defined(__WXWINCE__)
 
 #ifndef WX_PRECOMP
     #include "wx/app.h"
     #include "wx/menu.h"
 #endif //WX_PRECOMP
 
-#if defined(__SMARTPHONE__) && defined(__WXWINCE__)
-
 #include <windows.h>
 #include <ole2.h>
 #include <shellapi.h>
 #include <aygshell.h>
+#include <tpcshell.h>
+#include <tpcuser.h>
 #include "wx/msw/wince/missing.h"
 
 #include "wx/msw/wince/resources.h"
@@ -60,11 +54,7 @@ wxTopLevelWindowMSW::ButtonMenu::ButtonMenu()
 
 wxTopLevelWindowMSW::ButtonMenu::~ButtonMenu()
 {
-    if(m_menu)
-    {
-        delete m_menu;
-        m_menu = NULL;
-    };
+    wxDELETE(m_menu);
 }
 
 void wxTopLevelWindowMSW::SetLeftMenu(int id, const wxString& label, wxMenu *subMenu)
@@ -84,7 +74,7 @@ void wxTopLevelWindowMSW::ButtonMenu::SetButton(int id, const wxString& label, w
     m_assigned = true;
     m_id = id;
     if(label.empty() && wxIsStockID(id))
-        m_label = wxGetStockLabel(id);
+        m_label = wxGetStockLabel(id, wxSTOCK_NOFLAGS);
     else
         m_label = label;
     m_menu = subMenu;
@@ -231,7 +221,7 @@ void wxTopLevelWindowMSW::ReloadAllButtons()
 
     if (!SHCreateMenuBar(&menu_bar))
     {
-        wxFAIL_MSG( _T("SHCreateMenuBar failed") );
+        wxFAIL_MSG( wxT("SHCreateMenuBar failed") );
         return;
     }
 
@@ -246,6 +236,10 @@ void wxTopLevelWindowMSW::ReloadAllButtons()
         ::ShowWindow( prev_MenuBar, SW_HIDE );
     ::ShowWindow( m_MenuBarHWND, SW_SHOW );
 
+    // Setup backspace key handling
+    SendMessage(m_MenuBarHWND, SHCMBM_OVERRIDEKEY, VK_TBACK,
+                MAKELPARAM( SHMBOF_NODEFAULT | SHMBOF_NOTIFY,
+                            SHMBOF_NODEFAULT | SHMBOF_NOTIFY ));
 }
 
 bool wxTopLevelWindowMSW::HandleCommand(WXWORD id, WXWORD WXUNUSED(cmd), WXHWND WXUNUSED(control))
@@ -254,7 +248,7 @@ bool wxTopLevelWindowMSW::HandleCommand(WXWORD id, WXWORD WXUNUSED(cmd), WXHWND
     if ( id == IDM_LEFT || id == IDM_RIGHT )
     {
         int menuId = id == IDM_LEFT ? m_LeftButton.GetId() : m_RightButton.GetId() ;
-        wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, menuId);
+        wxCommandEvent commandEvent(wxEVT_MENU, menuId);
         commandEvent.SetEventObject(this);
         GetEventHandler()->ProcessEvent(commandEvent);
         return true;
@@ -262,5 +256,18 @@ bool wxTopLevelWindowMSW::HandleCommand(WXWORD id, WXWORD WXUNUSED(cmd), WXHWND
     return false;
 }
 
-#endif // __SMARTPHONE__ && __WXWINCE__
+bool wxTopLevelWindowMSW::MSWShouldPreProcessMessage(WXMSG* pMsg)
+{
+    MSG *msg = (MSG *)pMsg;
+
+    // Process back key to be like backspace.
+    if (msg->message == WM_HOTKEY)
+    {
+        if (HIWORD(msg->lParam) == VK_TBACK)
+            SHSendBackToFocusWindow(msg->message, msg->wParam, msg->lParam);
+    }
+
+    return wxTopLevelWindowBase::MSWShouldPreProcessMessage(pMsg);
+}
 
+#endif // __SMARTPHONE__ && __WXWINCE__