From bd6294b806583f506c0bbce6868e5ac669499188 Mon Sep 17 00:00:00 2001 From: Randall Luecke Date: Sun, 17 Jul 2011 22:46:27 -0700 Subject: [PATCH 1/3] Updated Jakefile for xcodecapp-cocoa to use the proper variable name. This should also fix the buildbot. --- Tools/xcodecapp-cocoa/Jakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools/xcodecapp-cocoa/Jakefile b/Tools/xcodecapp-cocoa/Jakefile index 9c1309249..eaca7ce98 100644 --- a/Tools/xcodecapp-cocoa/Jakefile +++ b/Tools/xcodecapp-cocoa/Jakefile @@ -34,7 +34,7 @@ task ("build", function() } else { - print("Building "+xcodecapp-cocoa+" requires Xcode."); + print("Building " + applicationName + " requires Xcode."); } }); From f0561844d86f7bed22a46505895f9aa797171d36 Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Thu, 21 Jul 2011 12:23:11 +0200 Subject: [PATCH 2/3] don't close a menu item with a submenu A submenu item should only close the menu if it has a non default action. This is compliant with how Cocoa behavior. --- AppKit/CPMenu/_CPMenuManager.j | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/AppKit/CPMenu/_CPMenuManager.j b/AppKit/CPMenu/_CPMenuManager.j index 7b1f2073a..abe9c15ee 100644 --- a/AppKit/CPMenu/_CPMenuManager.j +++ b/AppKit/CPMenu/_CPMenuManager.j @@ -230,7 +230,14 @@ var STICKY_TIME_INTERVAL = 500, else if (type === CPLeftMouseUp || type === CPRightMouseUp) { if (_hasMouseGoneUpAfterStartedTracking) + { + // Don't close the menu if the current item has a submenu + // and did not override it's default action + if ([activeItem action] === @selector(submenuAction:)) + return; + [trackingMenu cancelTracking]; + } else _hasMouseGoneUpAfterStartedTracking = YES; } From f2411422163560f4a587cdaf31e02da6fe062d56 Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Thu, 21 Jul 2011 14:41:47 +0200 Subject: [PATCH 3/3] don't disallow setEnabled for auto enabled items --- AppKit/CPMenu/CPMenu.j | 6 +++--- AppKit/CPMenuItem/CPMenuItem.j | 8 -------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/AppKit/CPMenu/CPMenu.j b/AppKit/CPMenu/CPMenu.j index cf9eb933a..8b8c350a3 100644 --- a/AppKit/CPMenu/CPMenu.j +++ b/AppKit/CPMenu/CPMenu.j @@ -622,11 +622,11 @@ var _CPMenuBarVisible = NO, var validator = [CPApp targetForAction:[item action] to:[item target] from:item]; if (!validator || ![validator respondsToSelector:[item action]]) - [item _setEnabled:NO]; + [item setEnabled:NO]; else if ([validator respondsToSelector:@selector(validateMenuItem:)]) - [item _setEnabled:[validator validateMenuItem:item]]; + [item setEnabled:[validator validateMenuItem:item]]; else if ([validator respondsToSelector:@selector(validateUserInterfaceItem:)]) - [item _setEnabled:[validator validateUserInterfaceItem:item]]; + [item setEnabled:[validator validateUserInterfaceItem:item]]; } [[_menuWindow _menuView] tile]; diff --git a/AppKit/CPMenuItem/CPMenuItem.j b/AppKit/CPMenuItem/CPMenuItem.j index e8e39a15f..6d70ba1b4 100644 --- a/AppKit/CPMenuItem/CPMenuItem.j +++ b/AppKit/CPMenuItem/CPMenuItem.j @@ -148,14 +148,6 @@ var CPMenuItemStringRepresentationDictionary = [CPDictionary dictionary]; @param isEnabled \c YES enables the item. \c NO disables it. */ - (void)setEnabled:(BOOL)isEnabled -{ - if ([_menu autoenablesItems]) - return; - - [self _setEnabled:isEnabled]; -} - -- (void)_setEnabled:(BOOL)isEnabled { if (_isEnabled === isEnabled) return;