diff --git a/ChangeLog b/ChangeLog index 5b20cec5..386d91d2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-05-10 Gregory John Casamento + + * GormViewWithContentViewEditor.m: The copyInView method was + not adding views to the document. Added a method which adds + the view and it's subviews. This fix corrects bug#3490. + 2003-05-10 Gregory John Casamento * GNUmakefile.preamble: Added to provide the -Werror parameter to diff --git a/GormDocument.m b/GormDocument.m index 79167729..258fe84c 100644 --- a/GormDocument.m +++ b/GormDocument.m @@ -1876,30 +1876,46 @@ static NSImage *classesImage = nil; * by the gui library are converted to their Gorm internal equivalents. */ u = AUTORELEASE([[NSUnarchiver alloc] initForReadingWithData: data]); - [u decodeClassName: @"GSNibContainer" asClassName: @"GormDocument"]; - [u decodeClassName: @"GSNibItem" asClassName: @"GormObjectProxy"]; - [u decodeClassName: @"GSCustomView" asClassName: @"GormCustomView"]; - [u decodeClassName: @"NSMenu" asClassName: @"GormNSMenu"]; - [u decodeClassName: @"NSWindow" asClassName: @"GormNSWindow"]; - [u decodeClassName: @"NSPanel" asClassName: @"GormNSPanel"]; - [u decodeClassName: @"NSBrowser" asClassName: @"GormNSBrowser"]; - [u decodeClassName: @"NSTableView" asClassName: @"GormNSTableView"]; - [u decodeClassName: @"NSOutlineView" asClassName: @"GormNSOutlineView"]; - [u decodeClassName: @"NSPopUpButton" asClassName: @"GormNSPopUpButton"]; + [u decodeClassName: @"GSNibContainer" + asClassName: @"GormDocument"]; + [u decodeClassName: @"GSNibItem" + asClassName: @"GormObjectProxy"]; + [u decodeClassName: @"GSCustomView" + asClassName: @"GormCustomView"]; + [u decodeClassName: @"NSMenu" + asClassName: @"GormNSMenu"]; + [u decodeClassName: @"NSWindow" + asClassName: @"GormNSWindow"]; + [u decodeClassName: @"NSPanel" + asClassName: @"GormNSPanel"]; + [u decodeClassName: @"NSBrowser" + asClassName: @"GormNSBrowser"]; + [u decodeClassName: @"NSTableView" + asClassName: @"GormNSTableView"]; + [u decodeClassName: @"NSOutlineView" + asClassName: @"GormNSOutlineView"]; + [u decodeClassName: @"NSPopUpButton" + asClassName: @"GormNSPopUpButton"]; [u decodeClassName: @"NSPopUpButtonCell" - asClassName: @"GormNSPopUpButtonCell"]; + asClassName: @"GormNSPopUpButtonCell"]; // templates - [u decodeClassName: @"NSWindowTemplate" asClassName: @"GormNSWindowTemplate"]; - [u decodeClassName: @"NSViewTemplate" asClassName: @"GormNSViewTemplate"]; - [u decodeClassName: @"NSTextTemplate" asClassName: @"GormNSTextTemplate"]; + [u decodeClassName: @"NSWindowTemplate" + asClassName: @"GormNSWindowTemplate"]; + [u decodeClassName: @"NSViewTemplate" + asClassName: @"GormNSViewTemplate"]; + [u decodeClassName: @"NSTextTemplate" + asClassName: @"GormNSTextTemplate"]; [u decodeClassName: @"NSControlTemplate" - asClassName: @"GormNSControlTemplate"]; - [u decodeClassName: @"NSButtonTemplate" asClassName: @"GormNSButtonTemplate"]; + asClassName: @"GormNSControlTemplate"]; + [u decodeClassName: @"NSButtonTemplate" + asClassName: @"GormNSButtonTemplate"]; [u decodeClassName: @"NSTextViewTemplate" - asClassName: @"GormNSTextViewTemplate"]; - [u decodeClassName: @"NSViewTemplate" asClassName: @"GormNSViewTemplate"]; - [u decodeClassName: @"NSMenuTemplate" asClassName: @"GormNSMenuTemplate"]; + asClassName: @"GormNSTextViewTemplate"]; + [u decodeClassName: @"NSViewTemplate" + asClassName: @"GormNSViewTemplate"]; + [u decodeClassName: @"NSMenuTemplate" + asClassName: @"GormNSMenuTemplate"]; c = [u decodeObject]; if (c == nil || [c isKindOfClass: [GSNibContainer class]] == NO) diff --git a/GormViewWithContentViewEditor.m b/GormViewWithContentViewEditor.m index b17bf36d..5eb7dec0 100644 --- a/GormViewWithContentViewEditor.m +++ b/GormViewWithContentViewEditor.m @@ -1028,6 +1028,22 @@ } +- (void) _addViewToDocument: (NSView *)view +{ + NSEnumerator *en = nil; + NSView *sub = nil; + + if([sub isKindOfClass: [GormViewEditor class]]) + return; + + [document attachObject: view toParent: nil]; + en = [[view subviews] objectEnumerator]; + while((sub = [en nextObject]) != nil) + { + [self _addViewToDocument: sub]; + } +} + - (void) pasteInView: (NSView *)view { NSPasteboard *pb = [NSPasteboard generalPasteboard]; @@ -1035,12 +1051,6 @@ NSArray *views; NSEnumerator *enumerator; NSView *sub; - /* - NSView *subs = [view subviews]; - int i; - int count; - BOOL alreadyThere = YES; - */ /* * Ask the document to get the copied views from the pasteboard and add @@ -1057,17 +1067,8 @@ { if ([sub isKindOfClass: [NSView class]] == YES) { - /* - for( i = 0; i < count; i++ ) - { - if (NSEqualRects([sub frame], - [[subs objectAtIndex: i] frame])) - break; - } - if (i >= count) - alreadyThere = NO; - */ [view addSubview: sub]; + [self _addViewToDocument: sub]; [array addObject: [document editorForObject: sub inEditor: self