From 01a327b8b88c3b2e339c00327c4e2d5f690fcdce Mon Sep 17 00:00:00 2001 From: "neil%parkwaycc.co.uk" Date: Thu, 29 Sep 2005 13:18:27 +0000 Subject: [PATCH] Bug 291099 menuitem context menus arrow keys doubled r=aaronlev sr=dbaron --- layout/xul/base/src/nsPopupSetFrame.cpp | 30 +++++++++++++------------ 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/layout/xul/base/src/nsPopupSetFrame.cpp b/layout/xul/base/src/nsPopupSetFrame.cpp index 5a1342082371..0df97cdc27c4 100644 --- a/layout/xul/base/src/nsPopupSetFrame.cpp +++ b/layout/xul/base/src/nsPopupSetFrame.cpp @@ -491,21 +491,23 @@ nsPopupSetFrame::OpenPopup(nsPopupFrameList* aEntry, PRBool aActivateFlag) ActivatePopup(aEntry, PR_TRUE); // register the rollup listeners, etc, but not if we're a tooltip - nsIFrame* activeChild = aEntry->mPopupFrame; - nsIMenuParent* childPopup = nsnull; - if (activeChild) - CallQueryInterface(activeChild, &childPopup); - if (!aEntry->mPopupType.EqualsLiteral("tooltip")) + if (!aEntry->mPopupType.EqualsLiteral("tooltip")) { + nsIFrame* activeChild = aEntry->mPopupFrame; + nsIMenuParent* childPopup = nsnull; + if (activeChild) + CallQueryInterface(activeChild, &childPopup); + + // Tooltips don't get keyboard navigation + if (childPopup && !nsMenuFrame::sDismissalListener) { + // First check and make sure this popup wants keyboard navigation + nsAutoString property; + aEntry->mPopupContent->GetAttr(kNameSpaceID_None, nsXULAtoms::ignorekeys, property); + if (!property.EqualsLiteral("true")) + childPopup->InstallKeyboardNavigator(); + } + UpdateDismissalListener(childPopup); - - // First check and make sure this popup wants keyboard navigation - nsAutoString property; - // Tooltips don't get keyboard navigation - aEntry->mPopupContent->GetAttr(kNameSpaceID_None, nsXULAtoms::ignorekeys, property); - if (!property.EqualsLiteral("true") && - childPopup && - !aEntry->mPopupType.EqualsLiteral("tooltip")) - childPopup->InstallKeyboardNavigator(); + } } else { if (aEntry->mCreateHandlerSucceeded && !OnDestroy(aEntry->mPopupContent))