Improvements in keyed coding and correction for NSCell formatter unarchiving issue.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@20235 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
gcasa 2004-10-18 01:48:15 +00:00
parent 31eeedc9c5
commit c0dc199651
7 changed files with 160 additions and 51 deletions

View file

@ -338,18 +338,51 @@
*/
- (void) encodeWithCoder: (NSCoder*)aCoder
{
[aCoder encodeValueOfObjCType: @encode(NSInterfaceStyle)
at: &_interface_style];
[aCoder encodeObject: _menu];
if([aCoder allowsKeyedCoding])
{
if(_interface_style != NSNoInterfaceStyle)
{
[aCoder encodeInt: _interface_style
forKey: @"NSInterfaceStyle"];
}
if([self menu] != nil)
{
[aCoder encodeObject: [self menu]
forKey: @"NSMenu"];
}
}
else
{
[aCoder encodeValueOfObjCType: @encode(NSInterfaceStyle)
at: &_interface_style];
[aCoder encodeObject: _menu];
}
}
- (id) initWithCoder: (NSCoder*)aDecoder
{
id obj;
[aDecoder decodeValueOfObjCType: @encode(NSInterfaceStyle)
at: &_interface_style];
obj = [aDecoder decodeObject];
if([aDecoder allowsKeyedCoding])
{
if([aDecoder containsValueForKey: @"NSInterfaceStyle"])
{
_interface_style = [aDecoder decodeIntForKey: @"NSInterfaceStyle"];
}
if([aDecoder containsValueForKey: @"NSMenu"])
{
obj = [aDecoder decodeObjectForKey: @"NSMenu"];
}
}
else
{
[aDecoder decodeValueOfObjCType: @encode(NSInterfaceStyle)
at: &_interface_style];
obj = [aDecoder decodeObject];
}
[self setMenu: obj];
return self;