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/

Reply via email to