]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/cocoa/dialog.mm
common wxMacWakeUp code across all platforms
[wxWidgets.git] / src / osx / cocoa / dialog.mm
index e5a9d3f6581691fa11e581505cc257617282ea2c..51a4d7ea402bb38d2147876e2591216ed599d058 100644 (file)
 
 extern wxList wxModalDialogs;
 
-void wxDialog::DoShowModal()
-{
-    wxCHECK_RET( !IsModal(), wxT("DoShowModal() called twice") );
-
-    wxModalDialogs.Append(this);
-
-    SetFocus() ;
-/*
-    WindowGroupRef windowGroup;
-    WindowGroupRef formerParentGroup;
-    bool resetGroupParent = false;
-
-    if ( GetParent() == NULL )
-    {
-        windowGroup = GetWindowGroup(windowRef) ;
-        formerParentGroup = GetWindowGroupParent( windowGroup );
-        SetWindowGroupParent( windowGroup, GetWindowGroupOfClass( kMovableModalWindowClass ) );
-        resetGroupParent = true;
-    }
-*/
+void wxDialog::DoShowWindowModal()
+{   
+    wxTopLevelWindow* parent = static_cast<wxTopLevelWindow*>(wxGetTopLevelParent(GetParent()));
+    
+    wxASSERT_MSG(parent, "ShowWindowModal requires the dialog to have a parent.");
+    
+    NSWindow* parentWindow = parent->GetWXWindow();
     NSWindow* theWindow = GetWXWindow();
     
-    NSModalSession session = [NSApp beginModalSessionForWindow:theWindow];
-    while (IsModal()) 
-    {
-        wxMacAutoreleasePool autoreleasepool;
-        if ([NSApp runModalSession:session] != NSRunContinuesResponse)
-            break;
-        // TODO should we do some idle processing ?
-    }
-    [NSApp endModalSession:session];
+    [NSApp beginSheet: theWindow
+            modalForWindow: parentWindow
+            modalDelegate: theWindow
+            didEndSelector: nil
+            contextInfo: nil];
+}
 
-/*
-    if ( resetGroupParent )
-    {
-        SetWindowGroupParent( windowGroup , formerParentGroup );
-    }
-*/
+void wxDialog::EndWindowModal()
+{
+    [NSApp endSheet: GetWXWindow()];
+    [GetWXWindow() orderOut:GetWXWindow()];
 }