Bug 1112212 - Send key events in onKeyMultiple; r=cpeterson

This commit is contained in:
Jim Chen
2015-01-10 12:41:58 -05:00
parent 4b1f160b46
commit d0c9706778
2 changed files with 40 additions and 20 deletions

View File

@@ -263,9 +263,9 @@ public class GeckoEvent {
return GeckoEvent.get(NativeGeckoEvent.NOOP);
}
public static GeckoEvent createKeyEvent(KeyEvent k, int metaState) {
public static GeckoEvent createKeyEvent(KeyEvent k, int action, int metaState) {
GeckoEvent event = GeckoEvent.get(NativeGeckoEvent.KEY_EVENT);
event.initKeyEvent(k, metaState);
event.initKeyEvent(k, action, metaState);
return event;
}
@@ -284,8 +284,11 @@ public class GeckoEvent {
return GeckoEvent.get(NativeGeckoEvent.COMPOSITOR_RESUME);
}
private void initKeyEvent(KeyEvent k, int metaState) {
mAction = k.getAction();
private void initKeyEvent(KeyEvent k, int action, int metaState) {
// Use a separate action argument so we can override the key's original action,
// e.g. change ACTION_MULTIPLE to ACTION_DOWN. That way we don't have to allocate
// a new key event just to change its action field.
mAction = action;
mTime = k.getEventTime();
// Normally we expect k.getMetaState() to reflect the current meta-state; however,
// some software-generated key events may not have k.getMetaState() set, e.g. key
@@ -620,7 +623,7 @@ public class GeckoEvent {
public static GeckoEvent createIMEKeyEvent(KeyEvent k) {
GeckoEvent event = GeckoEvent.get(NativeGeckoEvent.IME_KEY_EVENT);
event.initKeyEvent(k, 0);
event.initKeyEvent(k, k.getAction(), 0);
return event;
}