-
-// Lists to keep track of windows, so we can disable/enable them
-// for modal dialogs
-wxList wxModalDialogs;
-
-IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxTopLevelWindow)
-
-void wxDialog::Init()
-{
- m_isModalStyle = false;
-}
-
-bool wxDialog::Create( wxWindow *parent,
- wxWindowID id,
- const wxString& title,
- const wxPoint& pos,
- const wxSize& size,
- long style,
- const wxString& name )
-{
- SetExtraStyle( GetExtraStyle() | wxTOPLEVEL_EX_DIALOG );
-
- // All dialogs should really have this style...
- style |= wxTAB_TRAVERSAL;
-
- // ...but not these styles
- style &= ~(wxYES | wxOK | wxNO); // | wxCANCEL
-
- if ( !wxTopLevelWindow::Create( parent, id, title, pos, size, style, name ) )
- return false;
-
- return true;
-}
-
-void wxDialog::SetModal( bool flag )
-{
- if ( flag )
- {
- m_isModalStyle = true;
-
- SetWindowModality( (WindowRef)MacGetWindowRef(), kWindowModalityAppModal, NULL ) ;
- }
- else
- {
- m_isModalStyle = false;
- }
-}
-
-wxDialog::~wxDialog()
-{
- m_isBeingDeleted = true;
-
- // if the dialog is modal, this will end its event loop
- Show(false);
-}
-
-// On mac command-stop does the same thing as Esc, let the base class know
-// about it
-bool wxDialog::IsEscapeKey(const wxKeyEvent& event)
-{
- if ( event.GetKeyCode() == '.' && event.GetModifiers() == wxMOD_CMD )
- return true;
-
- return wxDialogBase::IsEscapeKey(event);
-}
-
-bool wxDialog::IsModal() const
-{
- return wxModalDialogs.Find((wxDialog *)this) != NULL; // const_cast
- // return m_isModalStyle;
-}
-
-
-bool wxDialog::Show(bool show)
-{
- if ( !wxDialogBase::Show(show) )
- // nothing to do
- return false;
-
- if (show && CanDoLayoutAdaptation())
- DoLayoutAdaptation();
-
- if ( show )
- // usually will result in TransferDataToWindow() being called
- InitDialog();
-
- HiliteMenu(0);
-
- if ( m_isModalStyle )
- {
- if ( show )
- {
- DoShowModal();
- }
- else // end of modal dialog
- {
- // this will cause IsModalShowing() return false and our local
- // message loop will terminate
- wxModalDialogs.DeleteObject(this);
- }
- }
-
- return true;
-}