diff --git a/ChangeLog b/ChangeLog index cd4c8d237..7ee47b308 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-04-27 Adrian Robert + * Headers/AppKit/NSApplication.h: Add app_is_launched ivar. + * Source/NSApplication.m (-run): Only go through launch process + and call -finishLaunching on first call. + (-replyToApplicationShouldTerminate:) Unhide mouse on app exit. + 2005-04-25 Adam Fedor * configure.ac: Check for lib portaudio diff --git a/Headers/AppKit/NSApplication.h b/Headers/AppKit/NSApplication.h index f76edbd9c..85f2f6315 100644 --- a/Headers/AppKit/NSApplication.h +++ b/Headers/AppKit/NSApplication.h @@ -98,7 +98,8 @@ APPKIT_EXPORT NSString *NSEventTrackingRunLoopMode; id _listener; NSMenu *_main_menu; NSMenu *_windows_menu; - // 5 bits + // 6 bits + BOOL _app_is_launched; BOOL _app_is_running; BOOL _app_is_active; BOOL _app_is_hidden; diff --git a/Source/NSApplication.m b/Source/NSApplication.m index 7d7d50567..0ba3526e1 100644 --- a/Source/NSApplication.m +++ b/Source/NSApplication.m @@ -1147,18 +1147,23 @@ static NSSize scaledIconSizeForSize(NSSize imageSize) format: @"NSApp's run called recursively"]; } - IF_NO_GC(_runLoopPool = [arpClass new]); /* * Set this flag here in case the application is actually terminated * inside -finishLaunching. */ _app_is_running = YES; - [self finishLaunching]; + if (_app_is_launched == NO) + { + _app_is_launched = YES; + IF_NO_GC(_runLoopPool = [arpClass new]); - [_listener updateServicesMenu]; - [_main_menu update]; - DESTROY(_runLoopPool); + [self finishLaunching]; + + [_listener updateServicesMenu]; + [_main_menu update]; + DESTROY(_runLoopPool); + } while (_app_is_running) { @@ -2718,6 +2723,7 @@ image. _app_is_running = NO; [[self windows] makeObjectsPerformSelector: @selector(close)]; + [NSCursor setHiddenUntilMouseMoves: NO]; /* Store our user information. */ [[NSUserDefaults standardUserDefaults] synchronize];