The proper way to do this would be to bring up the panel in the applicationDidFinishLaunching: method in the NSApplication delegate. This way the runloop is running and processing events. I can't pinpoint in my mind the exact line of code, but I am reasonably certain that this should avoid your problem.
[image: Mailtrack] <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> Sender notified by Mailtrack <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> 11/19/19, 05:24:31 PM On Tue, Nov 19, 2019 at 1:07 PM Ivan Vučica <i...@vucica.net> wrote: > Would the bug here, then, be that alerts don't check for this edge case? > > Patryk: I'd merge a pull request that makes -[NSAlert runModal] check > for an active runloop. > > On Tue, Nov 19, 2019 at 5:49 PM Gregory Casamento > <greg.casame...@gmail.com> wrote: > > > > Running modal panels requires the application run loop to be active. > You're not doing that. I suggest you take a look at some of the > application examples for how to do what you want here. > > > > On Tue, Nov 19, 2019, 10:34 AM Patryk Laurent <plaur...@me.com> wrote: > >> > >> > >> > On Nov 18, 2019, at 09:16, Wolfgang Lux <wolfgang....@gmail.com> > wrote: > >> > > >> >> Am 18.11.2019 um 04:43 schrieb Patryk Laurent <plaur...@me.com>: > >> >> “Uncaught exception NSInternalInconsistencyException, reason: > registration with registered client.” > >> > > >> > The error message itself is coming from > NSDistributedNotificationCenter and it looks like it's caused by a race > condition when two threads in your program are adding an observer to the > distribution notification center at about the same time. > >> > >> Thanks, Wolfgang. I find this surprising because my program is minimal > (source code below). I wasn’t getting this before, will look for what has > changed... > >> > >> Patryk > >> > >> #import <AppKit/AppKit.h> > >> > >> int main() > >> { > >> NSApplication *app; > >> app = [NSApplication sharedApplication]; > >> > >> NSAlert * alert = [[NSAlert alloc] init]; > >> [alert setMessageText:@"Hello alert"]; > >> [alert addButtonWithTitle:@"All done"]; > >> int result = [alert runModal]; > >> if (result == NSAlertFirstButtonReturn) { > >> NSLog(@"First button pressed"); > >> } > >> } > >> > >> > >> > >> > >> > >> > -- Gregory Casamento GNUstep Lead Developer / OLC, Principal Consultant http://www.gnustep.org - http://heronsperch.blogspot.com http://ind.ie/phoenix/