1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/osx/carbon/dialog.cpp
3 // Purpose: wxDialog class
4 // Author: Stefan Csomor
8 // Copyright: (c) Stefan Csomor
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #include "wx/wxprec.h"
14 #include "wx/dialog.h"
20 #include "wx/settings.h"
23 #include "wx/osx/private.h"
24 #include "wx/evtloop.h"
26 void wxDialog::EndWindowModal()
28 // Nothing to do for now.
31 void wxDialog::DoShowWindowModal()
33 // If someone wants to add support for this to wxOSX Carbon, here would
34 // be the place to start: http://trac.wxwidgets.org/ticket/9459
35 // Unfortunately, supporting sheets in Carbon isn't as straightforward
36 // as with Cocoa, so it will probably take some tweaking.
38 m_modality
= wxDIALOG_MODALITY_APP_MODAL
;
40 SendWindowModalDialogEvent ( wxEVT_WINDOW_MODAL_DIALOG_CLOSED
);
43 void wxDialog::DoShowModal()
48 WindowRef windowRef
= (WindowRef
) GetWXWindow();
49 WindowGroupRef windowGroup
= NULL
;
50 WindowGroupRef formerParentGroup
= NULL
;
51 bool resetGroupParent
= false;
53 if ( GetParent() == NULL
)
55 windowGroup
= GetWindowGroup(windowRef
) ;
56 if ( windowGroup
!= GetWindowGroupOfClass( kMovableModalWindowClass
) )
58 formerParentGroup
= GetWindowGroupParent( windowGroup
);
59 SetWindowGroupParent( windowGroup
, GetWindowGroupOfClass( kMovableModalWindowClass
) );
60 resetGroupParent
= true;
63 BeginAppModalStateForWindow(windowRef
) ;
65 #if wxUSE_CONSOLE_EVENTLOOP
66 wxEventLoopGuarantor ensureHasLoop
;
68 wxEventLoopBase
* const loop
= wxEventLoop::GetActive();
72 EndAppModalStateForWindow(windowRef
) ;
73 if ( resetGroupParent
)
75 SetWindowGroupParent( windowGroup
, formerParentGroup
);