diff --git a/ChangeLog b/ChangeLog index 7c053a7a6..ed4367e73 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-08-12 Fred Kiefer + + * Source/NSTextStorage.m (-classForCoder, -initWithCoder:, + -encodeWithCoder:): Encode this class and not the concrete + one. Also call super encoding/decoding methods as they are + correct in base now. + * Source/GSTextStorage.m (-classForPortCoder, -encodeWithCoder:, + -replacementObjectForPortCoder:): Remove these methods. + 2009-08-10 23:25-EDT Gregory John Casamento * Sounds/Basso.wav diff --git a/Source/GSTextStorage.m b/Source/GSTextStorage.m index c1ed98a75..7e7f7de63 100644 --- a/Source/GSTextStorage.m +++ b/Source/GSTextStorage.m @@ -464,28 +464,9 @@ _attributesAtIndexEffectiveRange( } } -- (Class) classForPortCoder -{ - return [self class]; -} - -- (id) replacementObjectForPortCoder: (NSPortCoder*)aCoder -{ - return self; -} - -- (void) encodeWithCoder: (NSCoder*)aCoder -{ - [super encodeWithCoder: aCoder]; - if([aCoder allowsKeyedCoding] == NO) - { - [aCoder encodeValueOfObjCType: @encode(id) at: &_textChars]; - [aCoder encodeValueOfObjCType: @encode(id) at: &_infoArray]; - } -} - - (id) initWithCoder: (NSCoder*)aCoder { + NSLog(@"Warning - decoding archive containing obsolete %@ object - please delete/replace this archive", NSStringFromClass([self class])); self = [super initWithCoder: aCoder]; if([aCoder allowsKeyedCoding] == NO) { @@ -498,20 +479,20 @@ _attributesAtIndexEffectiveRange( - (id) initWithString: (NSString*)aString attributes: (NSDictionary*)attributes { - NSZone *z = [self zone]; + NSZone *z = [self zone]; self = [super initWithString: aString attributes: attributes]; _infoArray = [[NSMutableArray allocWithZone: z] initWithCapacity: 1]; if (aString != nil && [aString isKindOfClass: [NSAttributedString class]]) { - NSAttributedString *as = (NSAttributedString*)aString; + NSAttributedString *as = (NSAttributedString*)aString; aString = [as string]; _setAttributesFrom(as, NSMakeRange(0, [aString length]), _infoArray); } else { - GSTextInfo *info; + GSTextInfo *info; if (attributes == nil) { @@ -541,7 +522,7 @@ _attributesAtIndexEffectiveRange( - (NSDictionary*) attributesAtIndex: (unsigned)index effectiveRange: (NSRange*)aRange { - unsigned dummy; + unsigned dummy; return _attributesAtIndexEffectiveRange( index, aRange, [_textChars length], _infoArray, &dummy); diff --git a/Source/NSTextStorage.m b/Source/NSTextStorage.m index d5af23db2..978ffdfbe 100644 --- a/Source/NSTextStorage.m +++ b/Source/NSTextStorage.m @@ -337,33 +337,36 @@ static NSNotificationCenter *nc = nil; [self fixAttributesInRange: range]; } +- (Class) classForCoder +{ + return abstract; +} + - (id) initWithCoder: (NSCoder*)aDecoder { + self = [super initWithCoder: aDecoder]; if ([aDecoder allowsKeyedCoding]) { id delegate = [aDecoder decodeObjectForKey: @"NSDelegate"]; - NSString *string = [aDecoder decodeObjectForKey: @"NSString"]; - - self = [self initWithString: string]; + [self setDelegate: delegate]; } else { - self = [super initWithCoder: aDecoder]; - } + } + return self; } - (void) encodeWithCoder: (NSCoder *)coder { + [super encodeWithCoder: coder]; if ([coder allowsKeyedCoding]) { [coder encodeObject: [self delegate] forKey: @"NSDelegate"]; - [coder encodeObject: [self string] forKey: @"NSString"]; } else { - [super encodeWithCoder: coder]; } }