bug 837293. Don't send keyPress events for characters that were pressed at the same time as the altGr button. When our CharacterReceived handler fires, don't send modifier key information if it includes the altGr button. r=bbondy

This commit is contained in:
Tim Abraldes 2013-06-17 14:56:23 -07:00
parent abc39cc023
commit 0c7899796c

View File

@ -576,6 +576,11 @@ MetroInput::OnCharacterReceived(uint32_t aCharCode,
nsKeyEvent keyEvent(true, NS_KEY_PRESS, mWidget.Get());
mModifierKeyState.Update();
if (mModifierKeyState.IsAltGr()) {
mModifierKeyState.Unset(MODIFIER_CONTROL
| MODIFIER_ALT
| MODIFIER_ALTGRAPH);
}
mModifierKeyState.InitInputEvent(keyEvent);
keyEvent.time = ::GetMessageTime();
keyEvent.isChar = true;
@ -662,7 +667,8 @@ MetroInput::OnKeyDown(uint32_t aVKey,
keyEvent.charCode = MapVirtualKey(aVKey, MAPVK_VK_TO_CHAR);
keyEvent.isChar = !IsControlCharacter(keyEvent.charCode);
if (!keyEvent.isChar
|| mModifierKeyState.IsControl()) {
|| (mModifierKeyState.IsControl()
&& !mModifierKeyState.IsAltGr())) {
// We don't want to send another message to our plugin,
// so reset keyEvent.pluginEvent
keyEvent.pluginEvent = nullptr;