X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/449c567346a1b3937e532cd87aac007faad76b04..d1fc6f065885a749930c86fdb0200f3220ad86b5:/src/cocoa/dialog.mm diff --git a/src/cocoa/dialog.mm b/src/cocoa/dialog.mm index a73f22e244..d4d2c51fd6 100644 --- a/src/cocoa/dialog.mm +++ b/src/cocoa/dialog.mm @@ -18,9 +18,12 @@ #endif //WX_PRECOMP #include "wx/cocoa/autorelease.h" +#include "wx/cocoa/string.h" #import #import +#import +#import // 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,7 +87,7 @@ wxDialog::~wxDialog() wxLogDebug("Destroying"); // setReleasedWhenClosed: NO [m_cocoaNSWindow close]; - DisassociateNSPanel(m_cocoaNSWindow); + DisassociateNSPanel(GetNSPanel()); } void wxDialog::Cocoa_close(void) @@ -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"); }