diff --git a/ChangeLog b/ChangeLog index 866f4840f..1a426a5c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-03-20 Fred Kiefer + + * Source/GSXibKeyedUnarchiver.m: + Merge some of the changes from the testplant branch. + 2017-03-19 Fred Kiefer * Source/NSBrowser.m: Add encoding of NSColumnsAutosaveName. diff --git a/Source/GSXibKeyedUnarchiver.m b/Source/GSXibKeyedUnarchiver.m index 1f218d6b9..a077589ea 100644 --- a/Source/GSXibKeyedUnarchiver.m +++ b/Source/GSXibKeyedUnarchiver.m @@ -620,6 +620,36 @@ didStartElement: (NSString*)elementName NSString *value = [element attributeForKey: @"value"]; id new = [NSNumber numberWithBool: [value boolValue]]; + if (objID != nil) + [decoded setObject: new forKey: objID]; + + return new; + } + else if ([@"point" isEqualToString: elementName]) + { + NSPoint point = [self decodePointForKey: [element attributeForKey: @"key"]]; + id new = [NSValue valueWithPoint: point]; + + if (objID != nil) + [decoded setObject: new forKey: objID]; + + return new; + } + else if ([@"size" isEqualToString: elementName]) + { + NSSize size = [self decodeSizeForKey: [element attributeForKey: @"key"]]; + id new = [NSValue valueWithSize: size]; + + if (objID != nil) + [decoded setObject: new forKey: objID]; + + return new; + } + else if ([@"rect" isEqualToString: elementName]) + { + NSRect rect = [self decodeRectForKey: [element attributeForKey: @"key"]]; + id new = [NSValue valueWithRect: rect]; + if (objID != nil) [decoded setObject: new forKey: objID]; @@ -668,7 +698,7 @@ didStartElement: (NSString*)elementName else if ([@"bytes" isEqualToString: elementName]) { id new = AUTORELEASE([[NSData alloc] initWithBase64EncodedString: [element value] - options: 0]); + options: NSDataBase64DecodingIgnoreUnknownCharacters]); if (objID != nil) [decoded setObject: new forKey: objID]; @@ -802,7 +832,8 @@ didStartElement: (NSString*)elementName if (o != nil) { - if ([o isKindOfClass: [NSNumber class]] == YES) + if (([o isKindOfClass: [NSNumber class]] == YES) || + ([o isKindOfClass: [NSString class]] == YES)) { return [o boolValue]; } @@ -847,7 +878,8 @@ didStartElement: (NSString*)elementName if (o != nil) { - if ([o isKindOfClass: [NSNumber class]] == YES) + if (([o isKindOfClass: [NSNumber class]] == YES) || + ([o isKindOfClass: [NSString class]] == YES)) { return [o doubleValue]; } @@ -868,7 +900,8 @@ didStartElement: (NSString*)elementName if (o != nil) { - if ([o isKindOfClass: [NSNumber class]] == YES) + if (([o isKindOfClass: [NSNumber class]] == YES) || + ([o isKindOfClass: [NSString class]] == YES)) { return [o floatValue]; } @@ -889,7 +922,8 @@ didStartElement: (NSString*)elementName if (o != nil) { - if ([o isKindOfClass: [NSNumber class]] == YES) + if (([o isKindOfClass: [NSNumber class]] == YES) || + ([o isKindOfClass: [NSString class]] == YES)) { long long l = [o longLongValue]; @@ -912,7 +946,8 @@ didStartElement: (NSString*)elementName if (o != nil) { - if ([o isKindOfClass: [NSNumber class]] == YES) + if (([o isKindOfClass: [NSNumber class]] == YES) || + ([o isKindOfClass: [NSString class]] == YES)) { long long l = [o longLongValue];