From 0eff4e2bc0346af7704bea3656ce0b31d5aae59a Mon Sep 17 00:00:00 2001 From: Francisco Ryan Tolmasky I Date: Thu, 3 Dec 2009 17:58:49 -0800 Subject: [PATCH] Fix for moving to a base menu resetting the child menu. Reviewed by me. --- AppKit/CPMenu/_CPMenuManager.j | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/AppKit/CPMenu/_CPMenuManager.j b/AppKit/CPMenu/_CPMenuManager.j index 5a0766503..253812f71 100644 --- a/AppKit/CPMenu/_CPMenuManager.j +++ b/AppKit/CPMenu/_CPMenuManager.j @@ -262,18 +262,24 @@ var SharedMenuManager = nil; } - (void)showMenu:(CPMenu)newMenu fromMenu:(CPMenu)baseMenu atPoint:(CGPoint)aGlobalLocation -{//console.log("SM: " + [self trackingMenu] + " SHOW MENU: " + newMenu + " from menu " + baseMenu); +{ var count = _menuContainerStack.length, index = count; // Hide all menus up to the base menu... while (index--) { - var menuContainer = _menuContainerStack[index]; + var menuContainer = _menuContainerStack[index], + menu = [menuContainer menu]; - if ([menuContainer menu] === baseMenu) + // If we reach the base menu, or this menu is already being shown, break. + if (menu === baseMenu) break; + // If this menu is already being shown, unhighlight and return. + if (menu === newMenu)//&& [menu supermenu] === baseMenu) + return [newMenu _highlightItemAtIndex:CPNotFound]; + [menuContainer orderOut:self]; [menuContainer setMenu:nil];