]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/dialog.cpp
Unicode compilation fix
[wxWidgets.git] / src / os2 / dialog.cpp
index edc04a0d243b4f1b784df71baa9cd0e4683af43e..1ab046a28ea5e0e69c05b39b52afe9980a6fd1d1 100644 (file)
@@ -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
 
 // ----------------------------------------------------------------------------