IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxTopLevelWindow)
-BEGIN_EVENT_TABLE(wxDialog, wxTopLevelWindow)
+BEGIN_EVENT_TABLE(wxDialog, wxDialogBase)
EVT_BUTTON(wxID_OK, wxDialog::OnOK)
EVT_BUTTON(wxID_APPLY, wxDialog::OnApply)
EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel)
))
return FALSE;
SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
+
+ //
+ // Must defer setting the title until after dialog is created and sized
+ //
+ if (!rsTitle.IsNull())
+ SetTitle(rsTitle);
return TRUE;
} // end of wxDialog::Create
//
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
// a message came or no more idle processing to do
wxTheApp->DoMessage();
}
+ gbInOnIdle = bWasInOnIdle;
//
// Snd restore focus
//
// 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)
{
InitDialog();
}
+ if (GetTitle().c_str())
+ ::WinSetWindowText((HWND)GetHwnd(), GetTitle().c_str());
if (IsModal())
{
if (bShow)
{
SetReturnCode(nRetCode);
Show(FALSE);
+ ::WinDismissDlg((HWND)GetHwnd(), nRetCode);
} // end of wxDialog::EndModal
// ----------------------------------------------------------------------------