git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37081
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// 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; }
// 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;
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
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);
}
// ---------------------------------------------------------------------------
}
// ---------------------------------------------------------------------------