On May 20, 2013, at 12:00 PM, Steve Mills wrote: > None of this code was written by me, so I don't know the reasoning behind the > design. We have a popup that shows an NSWindow with an NSBrowser in it. There > is a NSPopUpButtonCell subclass that handles the click with > trackMouse:inRect:ofView:untilMouseUp:. This trackMouse method calls [NSApp > run]. > > When a click happens outside the browser window, it calls [NSApp stop:nil] > from our NSWindowDidResignKeyNotification observer for the browser window. At > that point, it seems like the app is actually trying to terminate, because > all hell breaks loose - release builds crash with no crash log and debug > builds crash with a stack of: > > #0-9 is in the dtor for one of our global objects. > #10 0x91a1cebf in __cxa_finalize () > #11 0x91a1fdb9 in exit () > #12 0x957ba692 in NSApplicationMain () > #13 0x01310fb8 in main () > > This leads me to believe that using run and stop: is the wrong way to do this.
Yes. > What's another way to start and stop a "local" run loop? -[NSApplication runModalForWindow:] and either one of the -stopModalā¦ or -abortModal methods. To detect a click outside of the browser window, you may need to add a local event monitor (+[NSEvent addLocalMonitorForEventsMatchingMask:handler:]) as well as monitoring the window's key status. Regards, Ken _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com