From cc749825e7919fabf0c72d59b8638b5a32b5b1a8 Mon Sep 17 00:00:00 2001 From: pyr Date: Wed, 17 Apr 2002 19:57:36 +0000 Subject: [PATCH] Source/NSMenuItem.m git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@13489 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 7 ++++++ Source/NSMenuItem.m | 60 +++++++++++++++++++++++++++++++-------------- 2 files changed, 49 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 545511b68..c7c4411c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2002-04-17 Pierre-Yves Rivaille + + * Source/NSMenuItem.m: + ([NSMenuItem -initWithCoder:], [NSMenuItem -encodeWithCoder:]) + New encoding scheme. With the new scheme, menus can be loaded + properly from a gorm file. + 2002-04-16 Richard Frith-Macdonald * Source/NSPasteboard.m: Improve logging on server startup. diff --git a/Source/NSMenuItem.m b/Source/NSMenuItem.m index 97a2f126f..90b88bc73 100644 --- a/Source/NSMenuItem.m +++ b/Source/NSMenuItem.m @@ -72,7 +72,7 @@ static Class imageClass; { if (self == [NSMenuItem class]) { - [self setVersion: 1]; + [self setVersion: 2]; imageClass = [NSImage class]; } } @@ -448,32 +448,56 @@ static Class imageClass; [aCoder encodeObject: _offStateImage]; [aCoder encodeObject: _mixedStateImage]; [aCoder encodeValueOfObjCType: @encode(BOOL) at: &_changesState]; - [aCoder encodeConditionalObject: _target]; [aCoder encodeValueOfObjCType: @encode(SEL) at: &_action]; [aCoder encodeValueOfObjCType: "i" at: &_tag]; [aCoder encodeConditionalObject: _representedObject]; [aCoder encodeObject: _submenu]; + [aCoder encodeConditionalObject: _target]; } - (id) initWithCoder: (NSCoder*)aDecoder { - [aDecoder decodeValueOfObjCType: @encode(id) at: &_title]; - [aDecoder decodeValueOfObjCType: @encode(id) at: &_keyEquivalent]; - [aDecoder decodeValueOfObjCType: "I" at: &_keyEquivalentModifierMask]; - [aDecoder decodeValueOfObjCType: "I" at: &_mnemonicLocation]; - [aDecoder decodeValueOfObjCType: "i" at: &_state]; - [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_enabled]; - [aDecoder decodeValueOfObjCType: @encode(id) at: &_image]; - [aDecoder decodeValueOfObjCType: @encode(id) at: &_onStateImage]; - [aDecoder decodeValueOfObjCType: @encode(id) at: &_offStateImage]; - [aDecoder decodeValueOfObjCType: @encode(id) at: &_mixedStateImage]; - [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_changesState]; - _target = [aDecoder decodeObject]; - [aDecoder decodeValueOfObjCType: @encode(SEL) at: &_action]; - [aDecoder decodeValueOfObjCType: "i" at: &_tag]; - [aDecoder decodeValueOfObjCType: @encode(id) at: &_representedObject]; - [aDecoder decodeValueOfObjCType: @encode(id) at: &_submenu]; + int version = [aDecoder versionForClassName: + @"NSMenuItem"]; + if (version == 2) + { + [aDecoder decodeValueOfObjCType: @encode(id) at: &_title]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_keyEquivalent]; + [aDecoder decodeValueOfObjCType: "I" at: &_keyEquivalentModifierMask]; + [aDecoder decodeValueOfObjCType: "I" at: &_mnemonicLocation]; + [aDecoder decodeValueOfObjCType: "i" at: &_state]; + [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_enabled]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_image]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_onStateImage]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_offStateImage]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_mixedStateImage]; + [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_changesState]; + [aDecoder decodeValueOfObjCType: @encode(SEL) at: &_action]; + [aDecoder decodeValueOfObjCType: "i" at: &_tag]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_representedObject]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_submenu]; + _target = [aDecoder decodeObject]; + } + else + { + [aDecoder decodeValueOfObjCType: @encode(id) at: &_title]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_keyEquivalent]; + [aDecoder decodeValueOfObjCType: "I" at: &_keyEquivalentModifierMask]; + [aDecoder decodeValueOfObjCType: "I" at: &_mnemonicLocation]; + [aDecoder decodeValueOfObjCType: "i" at: &_state]; + [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_enabled]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_image]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_onStateImage]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_offStateImage]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_mixedStateImage]; + [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_changesState]; + _target = [aDecoder decodeObject]; + [aDecoder decodeValueOfObjCType: @encode(SEL) at: &_action]; + [aDecoder decodeValueOfObjCType: "i" at: &_tag]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_representedObject]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_submenu]; + } return self; }