diff --git a/mozilla/content/xbl/src/nsXBLEventHandler.cpp b/mozilla/content/xbl/src/nsXBLEventHandler.cpp index 6e72931ba48..f83fed68206 100644 --- a/mozilla/content/xbl/src/nsXBLEventHandler.cpp +++ b/mozilla/content/xbl/src/nsXBLEventHandler.cpp @@ -180,7 +180,8 @@ PRBool nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) { nsAutoString trueString = "true"; - + nsAutoString falseString = "false"; + // Get the keycode and charcode of the key event. PRUint32 keyCode, charCode; aKeyEvent->GetKeyCode(&keyCode); @@ -224,6 +225,18 @@ nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) if (!isModifierPresent) return PR_FALSE; } + else if (modifier == falseString) { +#ifdef XP_MAC + aKeyEvent->GetMetaKey(&isModifierPresent); +#elif XP_UNIX + aKeyEvent->GetAltKey(&isModifierPresent); +#else + aKeyEvent->GetCtrlKey(&isModifierPresent); +#endif + + if (isModifierPresent) + return PR_FALSE; + } // Check for shift. mHandlerElement->GetAttribute(kNameSpaceID_None, kShiftAtom, modifier); @@ -232,6 +245,11 @@ nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) if (!isModifierPresent) return PR_FALSE; } + else if (modifier == falseString) { + aKeyEvent->GetShiftKey(&isModifierPresent); + if (isModifierPresent) + return PR_FALSE; + } // Check for ctrl. mHandlerElement->GetAttribute(kNameSpaceID_None, kControlAtom, modifier); @@ -240,6 +258,11 @@ nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) if (!isModifierPresent) return PR_FALSE; } + else if (modifier == falseString) { + aKeyEvent->GetCtrlKey(&isModifierPresent); + if (isModifierPresent) + return PR_FALSE; + } // Check for meta. mHandlerElement->GetAttribute(kNameSpaceID_None, kMetaAtom, modifier); @@ -248,6 +271,11 @@ nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) if (!isModifierPresent) return PR_FALSE; } + else if (modifier == falseString) { + aKeyEvent->GetMetaKey(&isModifierPresent); + if (isModifierPresent) + return PR_FALSE; + } // Check for alt. mHandlerElement->GetAttribute(kNameSpaceID_None, kAltAtom, modifier); @@ -256,6 +284,11 @@ nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) if (!isModifierPresent) return PR_FALSE; } + else if (modifier == falseString) { + aKeyEvent->GetAltKey(&isModifierPresent); + if (isModifierPresent) + return PR_FALSE; + } return PR_TRUE; } diff --git a/mozilla/layout/xbl/src/nsXBLEventHandler.cpp b/mozilla/layout/xbl/src/nsXBLEventHandler.cpp index 6e72931ba48..f83fed68206 100644 --- a/mozilla/layout/xbl/src/nsXBLEventHandler.cpp +++ b/mozilla/layout/xbl/src/nsXBLEventHandler.cpp @@ -180,7 +180,8 @@ PRBool nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) { nsAutoString trueString = "true"; - + nsAutoString falseString = "false"; + // Get the keycode and charcode of the key event. PRUint32 keyCode, charCode; aKeyEvent->GetKeyCode(&keyCode); @@ -224,6 +225,18 @@ nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) if (!isModifierPresent) return PR_FALSE; } + else if (modifier == falseString) { +#ifdef XP_MAC + aKeyEvent->GetMetaKey(&isModifierPresent); +#elif XP_UNIX + aKeyEvent->GetAltKey(&isModifierPresent); +#else + aKeyEvent->GetCtrlKey(&isModifierPresent); +#endif + + if (isModifierPresent) + return PR_FALSE; + } // Check for shift. mHandlerElement->GetAttribute(kNameSpaceID_None, kShiftAtom, modifier); @@ -232,6 +245,11 @@ nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) if (!isModifierPresent) return PR_FALSE; } + else if (modifier == falseString) { + aKeyEvent->GetShiftKey(&isModifierPresent); + if (isModifierPresent) + return PR_FALSE; + } // Check for ctrl. mHandlerElement->GetAttribute(kNameSpaceID_None, kControlAtom, modifier); @@ -240,6 +258,11 @@ nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) if (!isModifierPresent) return PR_FALSE; } + else if (modifier == falseString) { + aKeyEvent->GetCtrlKey(&isModifierPresent); + if (isModifierPresent) + return PR_FALSE; + } // Check for meta. mHandlerElement->GetAttribute(kNameSpaceID_None, kMetaAtom, modifier); @@ -248,6 +271,11 @@ nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) if (!isModifierPresent) return PR_FALSE; } + else if (modifier == falseString) { + aKeyEvent->GetMetaKey(&isModifierPresent); + if (isModifierPresent) + return PR_FALSE; + } // Check for alt. mHandlerElement->GetAttribute(kNameSpaceID_None, kAltAtom, modifier); @@ -256,6 +284,11 @@ nsXBLEventHandler::KeyEventMatched(nsIDOMKeyEvent* aKeyEvent) if (!isModifierPresent) return PR_FALSE; } + else if (modifier == falseString) { + aKeyEvent->GetAltKey(&isModifierPresent); + if (isModifierPresent) + return PR_FALSE; + } return PR_TRUE; }