diff options
author | 2012-05-30 19:29:57 +0900 | |
---|---|---|
committer | 2012-05-30 19:49:38 +0900 | |
commit | d438fcaca2a35ace4fee5b7a469596bfe2d1b025 (patch) | |
tree | cf41e2df8b6dd7f5e5aac3892d1d83bc4b97e164 /java | |
parent | 62cd919dca9ef85cdd045b539b3ef85e921c6e4c (diff) | |
download | latinime-d438fcaca2a35ace4fee5b7a469596bfe2d1b025.tar.gz latinime-d438fcaca2a35ace4fee5b7a469596bfe2d1b025.tar.xz latinime-d438fcaca2a35ace4fee5b7a469596bfe2d1b025.zip |
Restrict phantom sudden move event hack to specific device
Bug: 6571778
Change-Id: I4306af387074d34db68a9bb16ae41debcfc36bfd
Diffstat (limited to 'java')
3 files changed, 40 insertions, 6 deletions
diff --git a/java/res/values/phantom_sudden_move_event_device_list.xml b/java/res/values/phantom_sudden_move_event_device_list.xml new file mode 100644 index 000000000..63d12e96e --- /dev/null +++ b/java/res/values/phantom_sudden_move_event_device_list.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <string-array name="phantom_sudden_move_event_device_list" translatable="false"> + <!-- "Build.HARDWARE,true" that needs "phantom sudden move event" hack. + See {@link com.android.inputmethod.keyboard.PointerTracker}. --> + <item>stingray,true</item> <!-- Xoom --> + </string-array> +</resources> diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java index b1599937b..e917a8128 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java @@ -338,8 +338,10 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke mHasDistinctMultitouch = context.getPackageManager() .hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT); - - PointerTracker.init(mHasDistinctMultitouch); + final boolean needsPhantomSuddenMoveEventHack = Boolean.parseBoolean( + Utils.getDeviceOverrideValue(context.getResources(), + R.array.phantom_sudden_move_event_device_list, "false")); + PointerTracker.init(mHasDistinctMultitouch, needsPhantomSuddenMoveEventHack); final TypedArray a = context.obtainStyledAttributes( attrs, R.styleable.LatinKeyboardView, defStyle, R.style.LatinKeyboardView); diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java index 59f53fc21..0f8f6cd91 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java @@ -108,6 +108,7 @@ public class PointerTracker { // Parameters for pointer handling. private static LatinKeyboardView.PointerTrackerParams sParams; private static int sTouchNoiseThresholdDistanceSquared; + private static boolean sNeedsPhantomSuddenMoveEventHack; private static final ArrayList<PointerTracker> sTrackers = new ArrayList<PointerTracker>(); private static PointerTrackerQueue sPointerTrackerQueue; @@ -162,12 +163,14 @@ public class PointerTracker { private static final KeyboardActionListener EMPTY_LISTENER = new KeyboardActionListener.Adapter(); - public static void init(boolean hasDistinctMultitouch) { + public static void init(boolean hasDistinctMultitouch, + boolean needsPhantomSuddenMoveEventHack) { if (hasDistinctMultitouch) { sPointerTrackerQueue = new PointerTrackerQueue(); } else { sPointerTrackerQueue = null; } + sNeedsPhantomSuddenMoveEventHack = needsPhantomSuddenMoveEventHack; setParameters(LatinKeyboardView.PointerTrackerParams.DEFAULT); } @@ -593,10 +596,13 @@ public class PointerTracker { final int dx = x - lastX; final int dy = y - lastY; final int lastMoveSquared = dx * dx + dy * dy; - if (lastMoveSquared >= mKeyQuarterWidthSquared) { - if (DEBUG_MODE) - Log.w(TAG, String.format("onMoveEvent: sudden move is translated to " + if (sNeedsPhantomSuddenMoveEventHack + && lastMoveSquared >= mKeyQuarterWidthSquared) { + if (DEBUG_MODE) { + Log.w(TAG, String.format("onMoveEvent:" + + " phantom sudden move event is translated to " + "up[%d,%d]/down[%d,%d] events", lastX, lastY, x, y)); + } if (ProductionFlag.IS_EXPERIMENTAL) { ResearchLogger.pointerTracker_onMoveEvent(x, y, lastX, lastY); } |