From 6b93ed702018e3c02e4e3ef38c25cda3579eee19 Mon Sep 17 00:00:00 2001 From: richard Date: Wed, 15 Dec 1999 15:28:18 +0000 Subject: [PATCH] Minor fixes git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@5520 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 7 +++++++ Source/NSMenu.m | 18 ++++++++++++++++++ Source/NSWindow.m | 13 ++++++++++--- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index d7e7b51dd..ffb99706c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Wed Dec 15 15:25:00 1999 Richard Frith-Macdonald + + * Source/NSWindow.m: ([-setFrameAutosaveName:]) bugfix for setting a + nil name (and removing the old name). + * Source/NSMenu.m: ([-close]) close attached menus too. + ([-display]) display attached menus too. + Wed Dec 15 11:13:00 1999 Richard Frith-Macdonald * Source/NSResponder.m: Don't try to encode/decode next responder - diff --git a/Source/NSMenu.m b/Source/NSMenu.m index 8d8dfcaa0..b80350170 100644 --- a/Source/NSMenu.m +++ b/Source/NSMenu.m @@ -1036,6 +1036,12 @@ static NSString* NSMenuLocationsKey = @"NSMenuLocations"; [aWindow orderFront: nil]; menu_isPartlyOffScreen = IS_OFFSCREEN(aWindow); + + /* + * If we have just been made visible, we must make sure that any attached + * submenu is visible too. + */ + [[self attachedMenu] display]; } - (void) displayTransient @@ -1069,6 +1075,18 @@ static NSString* NSMenuLocationsKey = @"NSMenuLocations"; - (void) close { + NSMenu *sub = [self attachedMenu]; + + /* + * If we have an attached submenu, we must close that too - but then make + * sure we still have a record of it so that it can be re-displayed if we + * are redisplayed. + */ + if (sub != nil) + { + [sub close]; + menu_attachedMenu = sub; + } [aWindow orderOut: self]; menu_is_visible = NO; diff --git a/Source/NSWindow.m b/Source/NSWindow.m index a4ac59345..b541019c7 100644 --- a/Source/NSWindow.m +++ b/Source/NSWindow.m @@ -2354,6 +2354,8 @@ resetCursorRectsForView(NSView *theView) - (BOOL) setFrameAutosaveName: (NSString *)name { + NSString *nameToRemove = nil; + if ([name isEqual: autosave_name]) { return YES; /* That's our name already. */ @@ -2367,6 +2369,10 @@ resetCursorRectsForView(NSView *theView) } if (autosave_name != nil) { + if (name == nil || [name isEqual: @""] == YES) + { + nameToRemove = RETAIN(autosave_name); + } [autosaveNames removeObject: autosave_name]; autosave_name = nil; } @@ -2377,7 +2383,7 @@ resetCursorRectsForView(NSView *theView) autosave_name = name; [name release]; } - else + else if (nameToRemove != nil) { NSUserDefaults *defs; NSString *key; @@ -2405,14 +2411,15 @@ resetCursorRectsForView(NSView *theView) { dict = AUTORELEASE([dict mutableCopy]); } - [dict removeObjectForKey: name]; + [dict removeObjectForKey: nameToRemove]; [defs setObject: dict forKey: key]; } else { - key = [NSString stringWithFormat: @"NSWindow Frame %@", name]; + key = [NSString stringWithFormat: @"NSWindow Frame %@", nameToRemove]; [defs removeObjectForKey: key]; } + RELEASE(nameToRemove); } [windowsLock unlock]; return YES;