Bug 630813 part.8 IsCtrlAltTab() should use KeymapWrapper r=karlt

This commit is contained in:
Masayuki Nakano 2012-02-22 16:34:31 +09:00
parent 7c65f01056
commit dfdc3bb1ef
3 changed files with 22 additions and 20 deletions

View File

@ -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<Modifier>(1 << i);
if (!(aModifiers & modifier)) {
continue;
}
if (!(aModifierState & GetModifierMask(modifier))) {
if (!(aModifierState & keymapWrapper->GetModifierMask(modifier))) {
return false;
}
aModifiers &= ~modifier;

View File

@ -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.
*/

View File

@ -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