Loading java/src/com/android/inputmethod/keyboard/PointerTracker.java +9 −0 Original line number Diff line number Diff line Loading @@ -610,6 +610,15 @@ public class PointerTracker { onUpEventInternal(); onDownEventInternal(x, y, eventTime); } else { // HACK: If there are currently multiple touches, register the key even if // the finger slides off the key. This defends against noise from some // touch panels when there are close multiple touches. // Caveat: When in chording input mode with a modifier key, we don't use // this hack. if (me != null && me.getPointerCount() > 1 && !sPointerTrackerQueue.hasModifierKeyOlderThan(this)) { onUpEventInternal(); } mKeyAlreadyProcessed = true; setReleasedKeyGraphics(oldKey); } Loading java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java +15 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ public class PointerTrackerQueue { private static final String TAG = PointerTrackerQueue.class.getSimpleName(); private static final boolean DEBUG = false; // TODO: Use ring buffer instead of {@link LinkedList}. private final LinkedList<PointerTracker> mQueue = new LinkedList<PointerTracker>(); public synchronized void add(PointerTracker tracker) { Loading Loading @@ -81,6 +82,20 @@ public class PointerTrackerQueue { } } public synchronized boolean hasModifierKeyOlderThan(PointerTracker tracker) { final Iterator<PointerTracker> it = mQueue.iterator(); while (it.hasNext()) { final PointerTracker t = it.next(); if (t == tracker) { break; } if (t.isModifier()) { return true; } } return false; } public synchronized boolean isAnyInSlidingKeyInput() { for (final PointerTracker tracker : mQueue) { if (tracker.isInSlidingKeyInput()) { Loading Loading
java/src/com/android/inputmethod/keyboard/PointerTracker.java +9 −0 Original line number Diff line number Diff line Loading @@ -610,6 +610,15 @@ public class PointerTracker { onUpEventInternal(); onDownEventInternal(x, y, eventTime); } else { // HACK: If there are currently multiple touches, register the key even if // the finger slides off the key. This defends against noise from some // touch panels when there are close multiple touches. // Caveat: When in chording input mode with a modifier key, we don't use // this hack. if (me != null && me.getPointerCount() > 1 && !sPointerTrackerQueue.hasModifierKeyOlderThan(this)) { onUpEventInternal(); } mKeyAlreadyProcessed = true; setReleasedKeyGraphics(oldKey); } Loading
java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java +15 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ public class PointerTrackerQueue { private static final String TAG = PointerTrackerQueue.class.getSimpleName(); private static final boolean DEBUG = false; // TODO: Use ring buffer instead of {@link LinkedList}. private final LinkedList<PointerTracker> mQueue = new LinkedList<PointerTracker>(); public synchronized void add(PointerTracker tracker) { Loading Loading @@ -81,6 +82,20 @@ public class PointerTrackerQueue { } } public synchronized boolean hasModifierKeyOlderThan(PointerTracker tracker) { final Iterator<PointerTracker> it = mQueue.iterator(); while (it.hasNext()) { final PointerTracker t = it.next(); if (t == tracker) { break; } if (t.isModifier()) { return true; } } return false; } public synchronized boolean isAnyInSlidingKeyInput() { for (final PointerTracker tracker : mQueue) { if (tracker.isInSlidingKeyInput()) { Loading