X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a579926062c74ef4e5ff2f1ddfbd60bbb43efed5..1b6f93fcfe211e81c77d7485c4c3786a846c84df:/src/os2/window.cpp?ds=inline diff --git a/src/os2/window.cpp b/src/os2/window.cpp index 2d3bee6535..4ab8890da9 100644 --- a/src/os2/window.cpp +++ b/src/os2/window.cpp @@ -33,6 +33,7 @@ #include "wx/frame.h" #include "wx/listbox.h" #include "wx/button.h" + #include "wx/bmpbuttn.h" #include "wx/msgdlg.h" #include "wx/scrolwin.h" #include "wx/radiobox.h" @@ -509,6 +510,14 @@ bool wxWindowOS2::Enable( if ( hWnd ) ::WinEnableWindow(hWnd, (BOOL)bEnable); + // + // The logic below doesn't apply to the top level windows -- otherwise + // showing a modal dialog would result in total greying out (and ungreying + // out later) of everything which would be really ugly + // + if (IsTopLevel()) + return TRUE; + wxWindowList::Node* pNode = GetChildren().GetFirst(); while (pNode) @@ -2418,6 +2427,14 @@ bool wxWindowOS2::OS2ProcessMessage( pBtn->OS2Command(BN_CLICKED, 0 /* unused */); return TRUE; } + else if (!IsTopLevel()) + { + // + // if not a top level window, let parent + // handle it + // + return FALSE; + } // else: but if it does not it makes sense to make // it work like a TAB - and that's what we do. // Note that Ctrl-Enter always works this way. @@ -2806,6 +2823,11 @@ MRESULT wxWindowOS2::OS2WindowProc( ,&nX ,&nY ); + if (!pWin->IsOfStandardClass()) + { + if (uMsg == WM_BUTTON1DOWN && pWin->AcceptsFocus() ) + pWin->SetFocus(); + } bProcessed = pWin->HandleMouseEvent( uMsg ,nX ,nY