From 4151738496e7cfee922c28372e787fecd8897407 Mon Sep 17 00:00:00 2001 From: Alexander Malmberg Date: Wed, 12 Jun 2002 21:04:51 +0000 Subject: [PATCH] Fix handling of timestamps and removal of old menu items when updating services/services menu. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@13855 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 6 ++++++ Source/GSServicesManager.m | 21 +++++++-------------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3614b900e..b945ae79b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2002-06-12 Alexander Malmberg + + * Source/GSServicesManager.m (-loadServices): Only update timestamp + when the file has changed. + (-rebuildServicesMenu): Correctly remove the old menu items. + Tue Jun 11 14:11:22 2002 Nicola Pero Patch by Jeff Teunissen with changes by myself: diff --git a/Source/GSServicesManager.m b/Source/GSServicesManager.m index 8ba7d36af..696ae994e 100644 --- a/Source/GSServicesManager.m +++ b/Source/GSServicesManager.m @@ -608,16 +608,15 @@ static NSString *disabledName = @".GNUstepDisabled"; if (plist) { NSMutableSet *s; - stamp = mod; changed = YES; s = (NSMutableSet*)[NSMutableSet setWithArray: plist]; ASSIGN(_allDisabled, s); } } + /* Track most recent version of file loaded */ + ASSIGN(_disabledStamp, mod); } } - /* Track most recent version of file loaded or last time we checked */ - ASSIGN(_disabledStamp, stamp); stamp = [NSDate date]; if ([mgr fileExistsAtPath: _servicesPath]) @@ -640,15 +639,14 @@ static NSString *disabledName = @".GNUstepDisabled"; mutableContainers: YES]; if (plist) { - stamp = mod; ASSIGN(_allServices, plist); changed = YES; } } + /* Track most recent version of file loaded */ + ASSIGN(_servicesStamp, mod); } } - /* Track most recent version of file loaded or last time we checked */ - ASSIGN(_servicesStamp, stamp); if (changed) { [self rebuildServices]; @@ -742,7 +740,6 @@ static NSString *disabledName = @".GNUstepDisabled"; { if (_servicesMenu != nil) { - NSArray *itemArray; NSMutableSet *keyEquivalents; unsigned pos; unsigned loc0; @@ -750,13 +747,9 @@ static NSString *disabledName = @".GNUstepDisabled"; SEL sel = @selector(doService:); NSMenu *submenu = nil; - itemArray = [[_servicesMenu itemArray] copy]; - pos = [itemArray count]; - while (pos > 0) - { - [_servicesMenu removeItem: [itemArray objectAtIndex: --pos]]; - } - RELEASE(itemArray); + pos = [_servicesMenu numberOfItems]; + for (; pos; pos--) + [_servicesMenu removeItemAtIndex: 0]; keyEquivalents = [NSMutableSet setWithCapacity: 4]; for (loc0 = pos = 0; pos < [_menuTitles count]; pos++)