]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/cocoa/dialog.mm
Add the possibility to disable invisible wxDataViewCtrl items.
[wxWidgets.git] / src / osx / cocoa / dialog.mm
index b195a8633490fa9f3a58818929a6141bb5a4d3e4..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];
-    int response = 0;
-    while (IsModal()) 
-    {
-        wxMacAutoreleasePool autoreleasepool;
-        // we cannot break based on the return value, because nested
-        // alerts might set this to stopped as well, so it would be
-        // unsafe
-        [NSApp runModalSession:session];
-        // TODO Idle
-    }
-    [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()];
 }