diff --git a/ChangeLog b/ChangeLog index c95b82d39..f24aa7e74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-06-04 13:30 Gregory John Casamento + + * Headers/AppKit/NSDrawer.h: Added ivar _contentSize to header. + * Source/NSDrawer.m: Implemented keyed and non-keyed encoding. + 2006-06-04 12:28 Gregory John Casamento * Source/GSTrackingRect.m: Encode, if not a keyed archiver. diff --git a/Headers/AppKit/NSDrawer.h b/Headers/AppKit/NSDrawer.h index 4a2c06e01..adf14c64c 100644 --- a/Headers/AppKit/NSDrawer.h +++ b/Headers/AppKit/NSDrawer.h @@ -53,6 +53,7 @@ enum { NSRectEdge _currentEdge; NSSize _maxContentSize; NSSize _minContentSize; + NSSize _contentSize; float _leadingOffset; float _trailingOffset; int _state; diff --git a/Source/NSDrawer.m b/Source/NSDrawer.m index 6095a419e..871a86cad 100644 --- a/Source/NSDrawer.m +++ b/Source/NSDrawer.m @@ -26,6 +26,8 @@ */ #include +#include +#include #include #include "AppKit/NSWindow.h" #include "AppKit/NSView.h" @@ -291,12 +293,64 @@ static NSNotificationCenter *nc = nil; */ - (void) encodeWithCoder: (NSCoder*)aCoder { -//FIXME + [super encodeWithCoder: aCoder]; + if([aCoder allowsKeyedCoding]) + { + [aCoder encodeSize: _contentSize forKey: @"NSContentSize"]; + [aCoder encodeObject: _delegate forKey: @"NSDelegate"]; + [aCoder encodeFloat: _leadingOffset forKey: @"NSLeadingOffset"]; + [aCoder encodeSize: _maxContentSize forKey: @"NSMaxContentSize"]; + [aCoder encodeSize: _minContentSize forKey: @"NSMinContentSize"]; + [aCoder encodeObject: _parentWindow forKey: @"NSParentWindow"]; + [aCoder encodeInt: _preferredEdge forKey: @"NSPreferredEdge"]; + [aCoder encodeFloat: _trailingOffset forKey: @"NSTrailingOffset"]; + } + else + { + [aCoder encodeSize: _contentSize]; + [aCoder encodeObject: _delegate]; + [aCoder encodeValueOfObjCType: @encode(float) at: &_leadingOffset]; + [aCoder encodeSize: _maxContentSize]; + [aCoder encodeSize: _minContentSize]; + [aCoder encodeObject: _parentWindow]; + [aCoder encodeValueOfObjCType: @encode(unsigned) at: &_preferredEdge]; + [aCoder encodeValueOfObjCType: @encode(float) at: &_trailingOffset]; + } } - (id) initWithCoder: (NSCoder*)aDecoder { -//FIXME + if((self = [super initWithCoder: aDecoder]) != nil) + { + if([aDecoder allowsKeyedCoding]) + { + _contentSize = [aDecoder decodeSizeForKey: @"NSContentSize"]; + ASSIGN(_delegate, [aDecoder decodeObjectForKey: @"NSDelegate"]); + _leadingOffset = [aDecoder decodeFloatForKey: @"NSLeadingOffset"]; + _maxContentSize = [aDecoder decodeSizeForKey: @"NSMaxContentSize"]; + _minContentSize = [aDecoder decodeSizeForKey: @"NSMinContentSize"]; + ASSIGN(_parentWindow, [aDecoder decodeObjectForKey: @"NSParentWindow"]); + _preferredEdge = [aDecoder decodeIntForKey: @"NSPreferredEdge"]; + _trailingOffset = [aDecoder decodeFloatForKey: @"NSTrailingOffset"]; + } + else + { + int version = [aDecoder versionForClassName: @"NSDrawer"]; + if(version == 0) + { + _contentSize = [aDecoder decodeSize]; + ASSIGN(_delegate, [aDecoder decodeObject]); + [aDecoder decodeValueOfObjCType: @encode(float) at: &_leadingOffset]; + _maxContentSize = [aDecoder decodeSize]; + _minContentSize = [aDecoder decodeSize]; + ASSIGN(_parentWindow, [aDecoder decodeObject]); + [aDecoder decodeValueOfObjCType: @encode(unsigned) at: &_preferredEdge]; + [aDecoder decodeValueOfObjCType: @encode(float) at: &_trailingOffset]; + } + else + return nil; + } + } return self; }