#include "wx/osx/private.h"
#include "wx/evtloop.h"
-extern wxList wxModalDialogs;
-
void wxDialog::EndWindowModal()
{
// Nothing to do for now.
}
-void wxDialog::ShowWindowModal()
+void wxDialog::DoShowWindowModal()
{
- // If someone wants to add support for this to wxOSX Carbon, here would
+ // If someone wants to add support for this to wxOSX Carbon, here would
// be the place to start: http://trac.wxwidgets.org/ticket/9459
// Unfortunately, supporting sheets in Carbon isn't as straightforward
// as with Cocoa, so it will probably take some tweaking.
- wxDialogBase::ShowWindowModal();
-}
-
-void wxDialog::DoShowModal()
-{
- wxCHECK_RET( !IsModal(), wxT("DoShowModal() called twice") );
-
- wxModalDialogs.Append(this);
-
- SetFocus() ;
-
- WindowRef windowRef = (WindowRef) GetWXWindow();
- WindowGroupRef windowGroup = NULL;
- WindowGroupRef formerParentGroup = NULL;
- bool resetGroupParent = false;
-
- if ( GetParent() == NULL )
- {
- windowGroup = GetWindowGroup(windowRef) ;
- if ( windowGroup != GetWindowGroupOfClass( kMovableModalWindowClass ) )
- {
- formerParentGroup = GetWindowGroupParent( windowGroup );
- SetWindowGroupParent( windowGroup, GetWindowGroupOfClass( kMovableModalWindowClass ) );
- resetGroupParent = true;
- }
- }
- BeginAppModalStateForWindow(windowRef) ;
-
-#if wxUSE_CONSOLE_EVENTLOOP
- wxEventLoopGuarantor ensureHasLoop;
-#endif
- wxEventLoopBase * const loop = wxEventLoop::GetActive();
- while ( IsModal() )
- loop->Dispatch();
- EndAppModalStateForWindow(windowRef) ;
- if ( resetGroupParent )
- {
- SetWindowGroupParent( windowGroup , formerParentGroup );
- }
+ m_modality = wxDIALOG_MODALITY_APP_MODAL;
+ ShowModal();
+ SendWindowModalDialogEvent ( wxEVT_WINDOW_MODAL_DIALOG_CLOSED );
}