Further improvements to attachObject:toParent:

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/gorm/trunk@21659 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Gregory John Casamento 2005-08-19 01:33:16 +00:00
parent 08f846d1df
commit 05a4b62108
2 changed files with 37 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2005-08-18 21:32 Gregory John Casamento <greg_casamento@yahoo.com>
* GormCore/GormDocument.m: attachObject:toParent code to add all
subviews of a view when it's added to the document.
2005-08-18 21:02 Gregory John Casamento <greg_casamento@yahoo.com>
* GormCore/GormDocument.m: attachObject:toParent: added code to insert

View file

@ -478,8 +478,8 @@ static NSImage *fileImage = nil;
*/
- (void) attachObject: (id)anObject toParent: (id)aParent
{
NSArray *old;
BOOL newObject = NO;
NSArray *old;
BOOL newObject = NO;
/*
* Create a connector that links this object to its parent.
@ -524,13 +524,28 @@ static NSImage *fileImage = nil;
[topLevelObjects addObject: anObject];
if ([anObject isKindOfClass: [NSWindow class]] == YES)
{
NSWindow *win = (NSWindow *)anObject;
NSView *contentView = [win contentView];
NSArray *subviews = [contentView subviews];
NSEnumerator *en = [subviews objectEnumerator];
NSView *view = nil;
// Turn off the release when closed flag, add the content view.
[anObject setReleasedWhenClosed: NO];
[self attachObject: [(NSWindow *)anObject contentView]
[self attachObject: contentView
toParent: anObject];
// Add all subviews from the window, if any.
while((view = [en nextObject]) != nil)
{
[self attachObject: view toParent: win];
}
}
[[self openEditorForObject: anObject] activate];
}
/*
* Add the menu.
*/
else if((aParent == filesOwner || aParent == nil) &&
[anObject isKindOfClass: [NSMenu class]] == NO)
{
@ -646,6 +661,20 @@ static NSImage *fileImage = nil;
id v = [ti view];
[self attachObject: v toParent: ti];
}
/*
* If it's a simple NSView, add it and all of it's subviews.
*/
else if ([anObject isKindOfClass: [NSView class]] == YES)
{
NSView *view = (NSView *)anObject, *sv = nil;
NSEnumerator *en = [[view subviews] objectEnumerator];
// Add all subviews from the window, if any.
while((sv = [en nextObject]) != nil)
{
[self attachObject: sv toParent: view];
}
}
// Detect and add any connection the object might have.
// This is done so that any palette items which have predefined connections will be