Altered the message loop to process implicit accelerators correctly in controls

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10457 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart 2001-06-08 11:33:22 +00:00
parent 6124f5c48c
commit ee544c1741

View File

@ -1061,23 +1061,19 @@ bool wxApp::ProcessMessage(WXMSG *wxmsg)
// a translation table.
wxWindow *wnd;
bool pastTopLevelWindow = FALSE;
for ( wnd = wndThis; wnd; wnd = wnd->GetParent() )
{
if ( wnd->MSWTranslateMessage(wxmsg) )
if ( !pastTopLevelWindow && wnd->MSWTranslateMessage(wxmsg))
return TRUE;
if ( wnd->MSWProcessMessage(wxmsg) )
return TRUE;
// stop at first top level window, i.e. don't try to process the key
// strokes originating in a dialog using the accelerators of the parent
// frame - this doesn't make much sense
if ( wnd->IsTopLevel() )
break;
}
// Anyone for a non-translation message? Try youngest descendants first.
for ( wnd = wndThis; wnd; wnd = wnd->GetParent() )
{
if ( wnd->MSWProcessMessage(wxmsg) )
return TRUE;
pastTopLevelWindow = TRUE;
}
return FALSE;