]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/dialog.cpp
freeze whole window for TLW
[wxWidgets.git] / src / osx / carbon / dialog.cpp
index 9924b54b06028dce197d051d1bf270542c30ac55..20742be5e4ceea70329ef029db7ec6c29b4328cc 100644 (file)
 #include "wx/osx/private.h"
 #include "wx/evtloop.h"
 
-extern wxList wxModalDialogs;
-
-void wxDialog::DoShowModal()
+void wxDialog::EndWindowModal()
 {
-    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();
+    // Nothing to do for now.
+}
 
-    EndAppModalStateForWindow(windowRef) ;
-    if ( resetGroupParent )
-    {
-        SetWindowGroupParent( windowGroup , formerParentGroup );
-    }
+void wxDialog::DoShowWindowModal()
+{
+    // 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.
+
+    m_modality = wxDIALOG_MODALITY_APP_MODAL;
+    ShowModal();
+    SendWindowModalDialogEvent ( wxEVT_WINDOW_MODAL_DIALOG_CLOSED  );
 }