aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/keyboard/PointerTracker.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/keyboard/PointerTracker.java')
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java28
1 files changed, 27 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index e66ea7b79..f64835726 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -19,6 +19,7 @@ package com.android.inputmethod.keyboard;
import android.content.Context;
import android.content.res.Resources;
import android.util.Log;
+import android.widget.TextView;
import com.android.inputmethod.keyboard.internal.PointerTrackerQueue;
import com.android.inputmethod.latin.LatinImeLogger;
@@ -64,9 +65,11 @@ public class PointerTracker {
public interface DrawingProxy {
public void invalidateKey(Key key);
+ public TextView inflateKeyPreviewText();
public void showKeyPreview(int keyIndex, PointerTracker tracker);
public void cancelShowKeyPreview(PointerTracker tracker);
public void dismissKeyPreview(PointerTracker tracker);
+ public boolean dismissPopupPanel();
}
public interface TimerProxy {
@@ -99,6 +102,7 @@ public class PointerTracker {
private Keyboard mKeyboard;
private List<Key> mKeys;
private int mKeyQuarterWidthSquared;
+ private final TextView mKeyPreviewText;
// The position and time at which first down event occurred.
private long mDownTime;
@@ -117,9 +121,12 @@ public class PointerTracker {
// true if keyboard layout has been changed.
private boolean mKeyboardLayoutHasBeenChanged;
- // true if event is already translated to a key action (long press or mini-keyboard)
+ // true if event is already translated to a key action.
private boolean mKeyAlreadyProcessed;
+ // true if this pointer has been long-pressed and is showing a popup panel.
+ private boolean mIsShowingPopupPanel;
+
// true if this pointer is repeatable key
private boolean mIsRepeatableKey;
@@ -211,6 +218,11 @@ public class PointerTracker {
mListener = handler.getKeyboardActionListener();
mDrawingProxy = handler.getDrawingProxy();
mTimerProxy = handler.getTimerProxy();
+ mKeyPreviewText = mDrawingProxy.inflateKeyPreviewText();
+ }
+
+ public TextView getKeyPreviewText() {
+ return mKeyPreviewText;
}
// Returns true if keyboard has been changed by this callback.
@@ -579,6 +591,10 @@ public class PointerTracker {
}
final int keyIndex = onUpKey(keyX, keyY, eventTime);
setReleasedKeyGraphics(keyIndex);
+ if (mIsShowingPopupPanel) {
+ mDrawingProxy.dismissPopupPanel();
+ mIsShowingPopupPanel = false;
+ }
if (mKeyAlreadyProcessed)
return;
if (!mIsRepeatableKey) {
@@ -586,6 +602,12 @@ public class PointerTracker {
}
}
+ public void onShowPopupPanel(int x, int y, long eventTime, KeyEventHandler handler) {
+ onLongPressed();
+ onDownEvent(x, y, eventTime, handler);
+ mIsShowingPopupPanel = true;
+ }
+
public void onLongPressed() {
mKeyAlreadyProcessed = true;
setReleasedKeyGraphics(mKeyIndex);
@@ -612,6 +634,10 @@ public class PointerTracker {
mDrawingProxy.cancelShowKeyPreview(this);
setReleasedKeyGraphics(mKeyIndex);
mIsInSlidingKeyInput = false;
+ if (mIsShowingPopupPanel) {
+ mDrawingProxy.dismissPopupPanel();
+ mIsShowingPopupPanel = false;
+ }
}
private void startRepeatKey(int keyIndex) {