From cc24cd9a737455c8b57e127bd1aa8972c19c620a Mon Sep 17 00:00:00 2001 From: Francisco Ryan Tolmasky I Date: Sun, 31 May 2009 01:32:56 -0700 Subject: [PATCH] Fix for nib2cib's separator menu items not showing up. Reviewed by me. --- AppKit/CPMenuItem.j | 41 ++++++++++++++++---------------------- Tools/nib2cib/NSMenuItem.j | 3 ++- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/AppKit/CPMenuItem.j b/AppKit/CPMenuItem.j index edf7c7c5e..b890c8593 100644 --- a/AppKit/CPMenuItem.j +++ b/AppKit/CPMenuItem.j @@ -38,6 +38,8 @@ */ @implementation CPMenuItem : CPObject { + BOOL _isSeparator; + CPString _title; //CPAttributedString _attributedTitle; @@ -89,6 +91,8 @@ if (self) { + _isSeparator = NO; + _title = aTitle; _action = anAction; @@ -479,7 +483,11 @@ CPOffState */ + (CPMenuItem)separatorItem { - return [[_CPMenuItemSeparator alloc] init]; + var separatorItem = [[self alloc] initWithTitle:@"" action:nil keyEquivalent:nil]; + + separatorItem._isSeparator = YES; + + return separatorItem; } /*! @@ -487,7 +495,7 @@ CPOffState */ - (BOOL)isSeparatorItem { - return NO; + return _isSeparator; } // Managing the Owning Menu @@ -731,29 +739,9 @@ CPControlKeyMask @end -/* @ignore */ -@implementation _CPMenuItemSeparator : CPMenuItem -{ -} +var CPMenuItemIsSeparatorKey = @"CPMenuItemIsSeparatorKey", -- (id)init -{ - self = [super initWithTitle:@"" action:nil keyEquivalent:nil]; - - if (self) - [self setEnabled:NO]; - - return self; -} - -- (BOOL)isSeparatorItem -{ - return YES; -} - -@end - -var CPMenuItemTitleKey = @"CPMenuItemTitleKey", + CPMenuItemTitleKey = @"CPMenuItemTitleKey", CPMenuItemTargetKey = @"CPMenuItemTargetKey", CPMenuItemActionKey = @"CPMenuItemActionKey", @@ -787,6 +775,8 @@ var CPMenuItemTitleKey = @"CPMenuItemTitleKey", if (self) { + _isSeparator = [aCoder containsValueForKey:CPMenuItemIsSeparatorKey] && [aCoder decodeBoolForKey:CPMenuItemIsSeparatorKey]; + _title = [aCoder decodeObjectForKey:CPMenuItemTitleKey]; // _font; @@ -832,6 +822,9 @@ var CPMenuItemTitleKey = @"CPMenuItemTitleKey", */ - (void)encodeWithCoder:(CPCoder)aCoder { + if (_isSeparator) + [aCoder encodeBool:_isSeparator forKey:CPMenuItemIsSeparatorKey]; + [aCoder encodeObject:_title forKey:CPMenuItemTitleKey]; [aCoder encodeObject:_target forKey:CPMenuItemTargetKey]; diff --git a/Tools/nib2cib/NSMenuItem.j b/Tools/nib2cib/NSMenuItem.j index fde8d8e3e..56ed373a2 100644 --- a/Tools/nib2cib/NSMenuItem.j +++ b/Tools/nib2cib/NSMenuItem.j @@ -33,6 +33,8 @@ if (self) { + _isSeparator = [aCoder decodeObjectForKey:@"NSIsSeparator"] || NO; + _title = [aCoder decodeObjectForKey:"NSTitle"]; // _font = [aCoder decodeObjectForKey:"NSTitle"]; @@ -89,7 +91,6 @@ @end - @implementation NSMenuItemCell : NSButtonCell { }