]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/dialog.mm
reSWIGed
[wxWidgets.git] / src / cocoa / dialog.mm
index a73f22e24453ee66f59af3bea5712f2ddde7bcaa..01df17f2c358e4690d40ecbe1258dcd2dc5b0051 100644 (file)
 #endif //WX_PRECOMP
 
 #include "wx/cocoa/autorelease.h"
+#include "wx/cocoa/string.h"
 
 #import <AppKit/NSPanel.h>
 #import <AppKit/NSApplication.h>
+#import <AppKit/NSEvent.h>
+#import <Foundation/NSRunLoop.h>
 
 // Lists to keep track of windows, so we can disable/enable them
 // for modal dialogs
@@ -73,6 +76,8 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID winid,
     // above alloc and thus the retain count will be 1.
     [m_cocoaNSWindow release];
     wxLogDebug("wxDialog m_cocoaNSWindow retainCount=%d",[m_cocoaNSWindow retainCount]);
+    [m_cocoaNSWindow setTitle:wxNSStringWithWxString(title)];
+    [m_cocoaNSWindow setHidesOnDeactivate:NO];
 
     return true;
 }
@@ -82,10 +87,10 @@ wxDialog::~wxDialog()
     wxLogDebug("Destroying");
     // setReleasedWhenClosed: NO
     [m_cocoaNSWindow close];
-    DisassociateNSPanel(m_cocoaNSWindow);
+    DisassociateNSPanel(GetNSPanel());
 }
 
-void wxDialog::Cocoa_close(void)
+void wxDialog::CocoaDelegate_windowWillClose(void)
 {
     m_closed = true;
     /* Actually, this isn't true anymore */
@@ -120,6 +125,21 @@ bool wxDialog::Show(bool show)
             wxAutoNSAutoreleasePool pool;
             wxModalDialogs.Append(this);
             wxLogDebug("runModal");
+            NSApplication *theNSApp = wxTheApp->GetNSApplication();
+            // 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.
+            if(![theNSApp isRunning])
+            {
+                while(NSEvent *event = [theNSApp
+                            nextEventMatchingMask:NSAnyEventMask
+                            untilDate:[NSDate distantPast]
+                            inMode:NSDefaultRunLoopMode
+                            dequeue: YES])
+                {
+                    [theNSApp sendEvent: event];
+                }
+            }
             [wxTheApp->GetNSApplication() runModalForWindow:m_cocoaNSWindow];
             wxLogDebug("runModal END");
         }