From ee544c174163d85974cc0c265d4f64d7de812f6e Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Fri, 8 Jun 2001 11:33:22 +0000 Subject: [PATCH] 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 --- src/msw/app.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 5cbf84c3b7..64b718e4e0 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -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; -- 2.47.2