]> git.saurik.com Git - wxWidgets.git/commitdiff
extracted wxFrame::MSWTranslateMessage() implementation into new MSWDoTranslateMessag...
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 23 Jan 2006 16:38:07 +0000 (16:38 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 23 Jan 2006 16:38:07 +0000 (16:38 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37081 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/frame.h
src/msw/frame.cpp
src/msw/mdi.cpp

index 10c17972d5124f01e261be4dc529bdae29c9c105..077e1092023ef95ee34694f4133f4c746d2de869 100644 (file)
@@ -122,13 +122,22 @@ protected:
     // propagate our state change to all child frames
     void IconizeChildFrames(bool bIconize);
 
     // propagate our state change to all child frames
     void IconizeChildFrames(bool bIconize);
 
-    // we add menu bar accel processing
-    bool MSWTranslateMessage(WXMSG* pMsg);
+    // override base class version to add menu bar accel processing
+    virtual bool MSWTranslateMessage(WXMSG *msg)
+    {
+        return MSWDoTranslateMessage(this, msg);
+    }
+
+    // the real implementation of MSWTranslateMessage(), also used by
+    // wxMDIChildFrame
+    bool MSWDoTranslateMessage(wxFrame *frame, WXMSG *msg);
 
     // window proc for the frames
 
     // window proc for the frames
-    WXLRESULT MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
+    virtual WXLRESULT MSWWindowProc(WXUINT message,
+                                    WXWPARAM wParam,
+                                    WXLPARAM lParam);
 
 
-    // handle WM_INITMENUPOPUP message
+    // handle WM_INITMENUPOPUP message to generate wxEVT_MENU_OPEN
     bool HandleInitMenuPopup(WXHMENU hMenu);
 
     virtual bool IsMDIChild() const { return false; }
     bool HandleInitMenuPopup(WXHMENU hMenu);
 
     virtual bool IsMDIChild() const { return false; }
index b9c2e1c30da364cbab6df56e06d7795518da733c..4afd60473737efb67cf40c54f8e8eb70d8872908 100644 (file)
@@ -726,7 +726,7 @@ WXHICON wxFrame::GetDefaultIcon() const
 // preprocessing
 // ---------------------------------------------------------------------------
 
 // preprocessing
 // ---------------------------------------------------------------------------
 
-bool wxFrame::MSWTranslateMessage(WXMSG* pMsg)
+bool wxFrame::MSWDoTranslateMessage(wxFrame *frame, WXMSG *pMsg)
 {
     if ( wxWindow::MSWTranslateMessage(pMsg) )
         return true;
 {
     if ( wxWindow::MSWTranslateMessage(pMsg) )
         return true;
@@ -737,7 +737,7 @@ bool wxFrame::MSWTranslateMessage(WXMSG* pMsg)
     if ( menuBar )
     {
         const wxAcceleratorTable& acceleratorTable = menuBar->GetAccelTable();
     if ( menuBar )
     {
         const wxAcceleratorTable& acceleratorTable = menuBar->GetAccelTable();
-        return acceleratorTable.Translate(this, pMsg);
+        return acceleratorTable.Translate(frame, pMsg);
     }
 #endif // wxUSE_MENUS && wxUSE_ACCEL
 
     }
 #endif // wxUSE_MENUS && wxUSE_ACCEL
 
index bcb1467df6c75607b286d9040a8edd5cbb956119..c61e986fa4e0b7d8833b541e696df1a24d6e9af9 100644 (file)
@@ -1165,7 +1165,9 @@ WXLRESULT wxMDIChildFrame::MSWDefWindowProc(WXUINT message, WXWPARAM wParam, WXL
 
 bool wxMDIChildFrame::MSWTranslateMessage(WXMSG* msg)
 {
 
 bool wxMDIChildFrame::MSWTranslateMessage(WXMSG* msg)
 {
-    return wxFrame::MSWTranslateMessage(msg);
+    // we must pass the parent frame to ::TranslateAccelerator(), otherwise it
+    // doesn't do its job correctly for MDI child menus
+    return MSWDoTranslateMessage((wxMDIChildFrame *)GetParent(), msg);
 }
 
 // ---------------------------------------------------------------------------
 }
 
 // ---------------------------------------------------------------------------