diff --git a/widget/gtk2/nsGtkKeyUtils.cpp b/widget/gtk2/nsGtkKeyUtils.cpp index 2969c3255980..38a8df853a84 100644 --- a/widget/gtk2/nsGtkKeyUtils.cpp +++ b/widget/gtk2/nsGtkKeyUtils.cpp @@ -518,22 +518,23 @@ KeymapWrapper::GetCurrentModifierState() /* static */ bool KeymapWrapper::AreModifiersCurrentlyActive(Modifiers aModifiers) { - KeymapWrapper* keymapWrapper = GetInstance(); guint modifierState = GetCurrentModifierState(); - return keymapWrapper->AreModifiersActive(aModifiers, modifierState); + return AreModifiersActive(aModifiers, modifierState); } -bool +/* static */ bool KeymapWrapper::AreModifiersActive(Modifiers aModifiers, - guint aModifierState) const + guint aModifierState) { NS_ENSURE_TRUE(aModifiers, false); + + KeymapWrapper* keymapWrapper = GetInstance(); for (PRUint32 i = 0; i < sizeof(Modifier) * 8 && aModifiers; i++) { Modifier modifier = static_cast(1 << i); if (!(aModifiers & modifier)) { continue; } - if (!(aModifierState & GetModifierMask(modifier))) { + if (!(aModifierState & keymapWrapper->GetModifierMask(modifier))) { return false; } aModifiers &= ~modifier; diff --git a/widget/gtk2/nsGtkKeyUtils.h b/widget/gtk2/nsGtkKeyUtils.h index 1c75b85b1aa2..8d1ffcc7924c 100644 --- a/widget/gtk2/nsGtkKeyUtils.h +++ b/widget/gtk2/nsGtkKeyUtils.h @@ -117,6 +117,20 @@ public: */ static bool AreModifiersCurrentlyActive(Modifiers aModifiers); + /** + * AreModifiersActive() just checks whether aModifierState indicates + * all modifiers in aModifiers are active or not. + * + * @param aModifiers One or more of Modifier values except + * NOT_MODIFIER. + * @param aModifierState GDK's modifier states. + * @return TRUE if aGdkModifierType indecates all of + * modifiers in aModifier are active. + * Otherwise, FALSE. + */ + static bool AreModifiersActive(Modifiers aModifiers, + guint aModifierState); + /** * InitInputEvent() initializes the aInputEvent with aModifierState. */ @@ -210,20 +224,6 @@ protected: static const char* GetModifierName(Modifier aModifier); #endif // PR_LOGGING - /** - * AreModifiersActive() just checks whether aModifierState indicates - * all modifiers in aModifiers are active or not. - * - * @param aModifiers One or more of Modifier values except - * NOT_MODIFIER. - * @param aModifierState GDK's modifier states. - * @return TRUE if aGdkModifierType indecates all of - * modifieres in aModifier are active. - * Otherwise, FALSE. - */ - bool AreModifiersActive(Modifiers aModifiers, - guint aModifierState) const; - /** * mGdkKeymap is a wrapped instance by this class. */ diff --git a/widget/gtk2/nsWindow.cpp b/widget/gtk2/nsWindow.cpp index e2c2155fbcc4..9de734e8b125 100644 --- a/widget/gtk2/nsWindow.cpp +++ b/widget/gtk2/nsWindow.cpp @@ -2922,7 +2922,8 @@ static bool IsCtrlAltTab(GdkEventKey *aEvent) { return aEvent->keyval == GDK_Tab && - aEvent->state & GDK_CONTROL_MASK && aEvent->state & GDK_MOD1_MASK; + KeymapWrapper::AreModifiersActive( + KeymapWrapper::CTRL | KeymapWrapper::ALT, aEvent->state); } bool