diff --git a/ChangeLog b/ChangeLog index e80816dc1..79d534133 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-01-09 22:53-EST Gregory John Casamento + + * Source/NSMenuItemCell.m: encode menu item in encodeWithCoder: + method. + * Source/NSMenu.m: Add code to handle NSNoAutoenable + * Source/NSPopUpButtonCell.m: Decode/encode selected index + * Source/NSPrintInfo.m: Set orientation after the page size is + known, since it has no effect when done earlier. + 2009-01-09 Richard Frith-Macdonald * Source/NSColorWell.m: Fix bug #25278 after checking behavior on MacOS diff --git a/Source/NSMenu.m b/Source/NSMenu.m index a3cd4bb89..3be6ce57f 100644 --- a/Source/NSMenu.m +++ b/Source/NSMenu.m @@ -1408,7 +1408,20 @@ static BOOL menuBarVisible = YES; if ([aDecoder allowsKeyedCoding]) { - dAuto = YES; + // + // NSNoAutoenable is present when the "Autoenable" option is NOT checked. + // NO = Autoenable menus, YES = Don't auto enable menus. We, therefore, + // have to invert the values of this flag in order to get the value of + // dAuto. + // + if ([aDecoder containsValueForKey: @"NSNoAutoenable"]) + { + dAuto = ([aDecoder decodeBoolForKey: @"NSNoAutoenable"] == NO) ? YES : NO; + } + else + { + dAuto = NO; + } dTitle = [aDecoder decodeObjectForKey: @"NSTitle"]; dItems = [aDecoder decodeObjectForKey: @"NSMenuItems"]; } diff --git a/Source/NSMenuItemCell.m b/Source/NSMenuItemCell.m index 462b82f4f..49d125b1b 100644 --- a/Source/NSMenuItemCell.m +++ b/Source/NSMenuItemCell.m @@ -883,8 +883,15 @@ static NSImage *arrowImage = nil; /* Cache arrow image. */ - (void) encodeWithCoder: (NSCoder*)aCoder { [super encodeWithCoder: aCoder]; - - [aCoder encodeConditionalObject: _menuItem]; + if ([aCoder allowsKeyedCoding]) + { + [aCoder encodeObject: _menuItem + forKey: @"NSMenuItem"]; + } + else + { + [aCoder encodeConditionalObject: _menuItem]; + } } - (id) initWithCoder: (NSCoder*)aDecoder diff --git a/Source/NSPopUpButtonCell.m b/Source/NSPopUpButtonCell.m index 4c48aaea8..c99959009 100644 --- a/Source/NSPopUpButtonCell.m +++ b/Source/NSPopUpButtonCell.m @@ -1048,21 +1048,25 @@ static NSImage *_pbc_image[5]; [super encodeWithCoder: aCoder]; if ([aCoder allowsKeyedCoding]) { - [aCoder encodeBool: [self altersStateOfSelectedItem] forKey: @"NSAltersState"]; - [aCoder encodeBool: [self usesItemFromMenu] forKey: @"NSUsesItemFromMenu"]; - [aCoder encodeInt: [self arrowPosition] forKey: @"NSArrowPosition"]; - [aCoder encodeInt: [self preferredEdge] forKey: @"NSPreferredEdge"]; - + [aCoder encodeBool: [self altersStateOfSelectedItem] + forKey: @"NSAltersState"]; + [aCoder encodeBool: [self usesItemFromMenu] + forKey: @"NSUsesItemFromMenu"]; + [aCoder encodeInt: [self arrowPosition] + forKey: @"NSArrowPosition"]; + [aCoder encodeInt: [self preferredEdge] + forKey: @"NSPreferredEdge"]; + [aCoder encodeInt: [self indexOfSelectedItem] + forKey: @"NSSelectedIndex"]; + [aCoder encodeBool: [self pullsDown] + forKey: @"NSPullDown"]; + // encode the menu, if present. if (_menu != nil) { - [aCoder encodeObject: _menu forKey: @"NSMenu"]; + [aCoder encodeObject: _menu + forKey: @"NSMenu"]; } - - if (_menuItem != nil) - { - [aCoder encodeObject: _menuItem forKey: @"NSMenuItem"]; - } } else { @@ -1107,7 +1111,7 @@ static NSImage *_pbc_image[5]; if ([aDecoder containsValueForKey: @"NSArrowPosition"]) { NSPopUpArrowPosition position = [aDecoder decodeIntForKey: - @"NSArrowPosition"]; + @"NSArrowPosition"]; [self setArrowPosition: position]; } @@ -1117,10 +1121,23 @@ static NSImage *_pbc_image[5]; [self setPreferredEdge: edge]; } + if ([aDecoder containsValueForKey: @"NSSelectedIndex"]) + { + int selectedIdx = [aDecoder decodeIntForKey: + @"NSSelectedIndex"]; + [self selectItem: [self itemAtIndex: selectedIdx]]; + } + if ([aDecoder containsValueForKey: @"NSPullDown"]) + { + BOOL pullDown = [aDecoder decodeBoolForKey: @"NSPullDown"]; + [self setPullsDown: pullDown]; + } menu = [aDecoder decodeObjectForKey: @"NSMenu"]; [self setMenu: nil]; [self setMenu: menu]; + [self setAutoenablesItems: NO]; + [self setEnabled: YES]; } else { diff --git a/Source/NSPrintInfo.m b/Source/NSPrintInfo.m index 1acb1a6ff..3ba972b06 100644 --- a/Source/NSPrintInfo.m +++ b/Source/NSPrintInfo.m @@ -155,7 +155,6 @@ static NSPrintInfo *sharedPrintInfo = nil; [self setJobDisposition: NSPrintSpoolJob]; [self setHorizontallyCentered: YES]; [self setVerticallyCentered: YES]; - [self setOrientation: NSPortraitOrientation]; printer = [NSPrintInfo defaultPrinter]; [self setPrinter: printer]; @@ -176,6 +175,7 @@ static NSPrintInfo *sharedPrintInfo = nil; [self setLeftMargin: 36]; [self setTopMargin: 72]; [self setBottomMargin: 72]; + [self setOrientation: NSPortraitOrientation]; if (aDict != nil) {