X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed45e26357928c1f33d317fd7dfb1ec617389584..b3d008dbd5a0ae0d55c338cddbfd97310a532aba:/src/msw/app.cpp diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 5cbf84c3b7..6277236d8e 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -86,7 +86,7 @@ #include #include -#if defined(__WIN95__) && !(defined(__GNUWIN32_OLD__) || defined(__TWIN32__)) +#if defined(__WIN95__) && !((defined(__GNUWIN32_OLD__) || defined(__TWIN32__)) && !defined(__CYGWIN10__)) #include #endif @@ -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;