]> 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 2e6a9e44155949d83311c4b3cf5bd03c92aa38fb..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
 // 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
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) Stefan Csomor
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -24,7 +24,7 @@
 
 extern wxList wxModalDialogs;
 
 
 extern wxList wxModalDialogs;
 
-void wxDialog::ShowWindowModal()
+void wxDialog::DoShowWindowModal()
 {   
     wxTopLevelWindow* parent = static_cast<wxTopLevelWindow*>(wxGetTopLevelParent(GetParent()));
     
 {   
     wxTopLevelWindow* parent = static_cast<wxTopLevelWindow*>(wxGetTopLevelParent(GetParent()));
     
@@ -32,7 +32,7 @@ void wxDialog::ShowWindowModal()
     
     NSWindow* parentWindow = parent->GetWXWindow();
     NSWindow* theWindow = GetWXWindow();
     
     NSWindow* parentWindow = parent->GetWXWindow();
     NSWindow* theWindow = GetWXWindow();
-
+    
     [NSApp beginSheet: theWindow
             modalForWindow: parentWindow
             modalDelegate: theWindow
     [NSApp beginSheet: theWindow
             modalForWindow: parentWindow
             modalDelegate: theWindow
@@ -43,76 +43,5 @@ void wxDialog::ShowWindowModal()
 void wxDialog::EndWindowModal()
 {
     [NSApp endSheet: GetWXWindow()];
 void wxDialog::EndWindowModal()
 {
     [NSApp endSheet: GetWXWindow()];
-}
-
-void wxDialog::DoShowModal()
-{
-    wxCHECK_RET( !IsModal(), wxT("DoShowModal() called twice") );
-
-    // If the app hasn't started, flush the event queue
-    // If we don't do this, the Dock doesn't get the message that
-    // the app has started so will refuse to activate it.
-    NSApplication *theNSApp = [NSApplication sharedApplication];
-    if (![theNSApp isRunning])
-    {
-        wxMacAutoreleasePool pool;
-        while(NSEvent *event = [theNSApp nextEventMatchingMask:NSAnyEventMask untilDate:nil inMode:NSDefaultRunLoopMode dequeue:YES])
-        {
-            [theNSApp sendEvent:event];
-        }
-    }
-
-    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;
-    }
-*/
-    NSWindow* theWindow = GetWXWindow();
-
-    NSModalSession session = [NSApp beginModalSessionForWindow:theWindow];
-    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];
-
-        // break if ended, perform no further idle processing
-        if (!IsModal())
-            break;
-
-        // do some idle processing
-        bool needMore = false;
-        if (wxTheApp)
-        {
-            wxTheApp->ProcessPendingEvents();
-            needMore = wxTheApp->ProcessIdle();
-        }
-        
-        if (!needMore)
-        {
-            // no more idle processing wanted - block until the next event
-            [theNSApp nextEventMatchingMask:NSAnyEventMask untilDate:[NSDate distantFuture] inMode:NSDefaultRunLoopMode dequeue:NO];
-        }
-    }
-    [NSApp endModalSession:session];
-
-/*
-    if ( resetGroupParent )
-    {
-        SetWindowGroupParent( windowGroup , formerParentGroup );
-    }
-*/
+    [GetWXWindow() orderOut:GetWXWindow()];
 }
 }