#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
// 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;
}
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 */
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");
}