X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c9b9e020cab11094582a2b921bf9943f8f5d4e6f..1978421a6d8b81c1f8a961da4b8ddf544fec7b1b:/src/os2/dialog.cpp diff --git a/src/os2/dialog.cpp b/src/os2/dialog.cpp index edc04a0d24..1ab046a28e 100644 --- a/src/os2/dialog.cpp +++ b/src/os2/dialog.cpp @@ -200,7 +200,20 @@ void wxDialog::DoShowModal() // wxASSERT_MSG(!m_pWindowDisabler, _T("disabling windows twice?")); - m_pWindowDisabler = new wxWindowDisabler(this); + // + // Disables other app windows and window proc message processing + // until WinDismissDlg called + // + ::WinProcessDlg((HWND)GetHwnd()); + + // + // Before entering the modal loop, reset the "is in OnIdle()" flag (see + // comment in app.cpp) + // + extern bool gbInOnIdle; + bool bWasInOnIdle = gbInOnIdle; + + gbInOnIdle = FALSE; // // Enter the modal loop @@ -217,6 +230,7 @@ void wxDialog::DoShowModal() // a message came or no more idle processing to do wxTheApp->DoMessage(); } + gbInOnIdle = bWasInOnIdle; // // Snd restore focus @@ -243,7 +257,8 @@ bool wxDialog::Show( // // If we had disabled other app windows, reenable them back now because // if they stay disabled Windows will activate another window (one - // which is enabled, anyhow) and we will lose activation + // which is enabled, anyhow) and we will lose activation. We really don't + // do this in OS/2 since PM does this for us. // if (m_pWindowDisabler) { @@ -326,6 +341,7 @@ void wxDialog::EndModal( { SetReturnCode(nRetCode); Show(FALSE); + ::WinDismissDlg((HWND)GetHwnd(), nRetCode); } // end of wxDialog::EndModal // ----------------------------------------------------------------------------