]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/cocoa/dialog.mm
Fit modeless preferences dialog to its contents too.
[wxWidgets.git] / src / osx / cocoa / dialog.mm
index b195a8633490fa9f3a58818929a6141bb5a4d3e4..6ae5bd86aa215be35316e43ef30edc1e84fd4189 100644 (file)
@@ -1,10 +1,10 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        src/osx/cocoa/dialog.cpp
+// Name:        src/osx/cocoa/dialog.mm
 // Purpose:     wxDialog class
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     1998-01-01
-// RCS-ID:      $Id: dialog.cpp 54820 2008-07-29 20:04:11Z SC $
+// RCS-ID:      $Id$
 // Copyright:   (c) Stefan Csomor
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 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()];
 }