Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b4d521f authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Add PointerTracker argument to long press related methods" into gingerbread

parents 83c6069b 3d4123fa
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -254,11 +254,13 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener,
                    startKeyRepeatTimer(REPEAT_INTERVAL, msg.arg1, tracker);
                    break;
                }
                case MSG_LONGPRESS_KEY:
                    openPopupIfRequired(msg.arg1);
                case MSG_LONGPRESS_KEY: {
                    final PointerTracker tracker = (PointerTracker)msg.obj;
                    openPopupIfRequired(msg.arg1, tracker);
                    break;
                }
            }
        }

        public void popupPreview(long delay, int keyIndex, PointerTracker tracker) {
            removeMessages(MSG_POPUP_PREVIEW);
@@ -299,9 +301,9 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener,
            return mInKeyRepeat;
        }

        public void startLongPressTimer(int keyIndex, long delay) {
        public void startLongPressTimer(long delay, int keyIndex, PointerTracker tracker) {
            removeMessages(MSG_LONGPRESS_KEY);
            sendMessageDelayed(obtainMessage(MSG_LONGPRESS_KEY, keyIndex, 0), delay);
            sendMessageDelayed(obtainMessage(MSG_LONGPRESS_KEY, keyIndex, 0, tracker), delay);
        }

        public void cancelLongPressTimer() {
@@ -962,16 +964,15 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener,
                key.x + key.width + getPaddingLeft(), key.y + key.height + getPaddingTop());
    }

    private boolean openPopupIfRequired(int keyIndex) {
    private boolean openPopupIfRequired(int keyIndex, PointerTracker tracker) {
        // Check if we have a popup layout specified first.
        if (mPopupLayout == 0) {
            return false;
        }
        if (keyIndex < 0 || keyIndex >= mKeys.length) {
            return false;
        }

        Key popupKey = mKeys[keyIndex];
        Key popupKey = tracker.getKey(keyIndex);
        if (popupKey == null)
            return false;
        boolean result = onLongPress(popupKey);
        if (result) {
            dismissKeyPreview();
+23 −6
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.view.ViewConfiguration;
public class PointerTracker {
    private static final String TAG = "PointerTracker";
    private static final boolean DEBUG = false;
    private static final boolean DEBUG_MOVE = true && DEBUG;

    public interface UIProxy {
        public void invalidateKey(Key key);
@@ -155,12 +156,12 @@ public class PointerTracker {
                repeatKey(keyIndex);
                mHandler.startKeyRepeatTimer(REPEAT_START_DELAY, keyIndex, this);
            }
            mHandler.startLongPressTimer(keyIndex, LONGPRESS_TIMEOUT);
            mHandler.startLongPressTimer(LONGPRESS_TIMEOUT, keyIndex, this);
        }
        showKeyPreviewAndUpdateKey(keyIndex);
        updateMoveDebouncing(touchX, touchY);
        if (DEBUG)
            Log.d(TAG, "onDownEvent: [" + mPointerId + "] modifier=" + isModifier());
            debugLog("onDownEvent:", touchX, touchY);
    }

    public void onMoveEvent(int touchX, int touchY, long eventTime) {
@@ -169,7 +170,7 @@ public class PointerTracker {
            if (mCurrentKey == NOT_A_KEY) {
                updateTimeDebouncing(eventTime);
                mCurrentKey = keyIndex;
                mHandler.startLongPressTimer(keyIndex, LONGPRESS_TIMEOUT);
                mHandler.startLongPressTimer(LONGPRESS_TIMEOUT, keyIndex, this);
            } else if (isMinorMoveBounce(touchX, touchY, keyIndex, mCurrentKey)) {
                updateTimeDebouncing(eventTime);
            } else {
@@ -177,7 +178,7 @@ public class PointerTracker {
                resetTimeDebouncing(eventTime, mCurrentKey);
                resetMoveDebouncing();
                mCurrentKey = keyIndex;
                mHandler.startLongPressTimer(keyIndex, LONGPRESS_TIMEOUT);
                mHandler.startLongPressTimer(LONGPRESS_TIMEOUT, keyIndex, this);
            }
        } else {
            mHandler.cancelLongPressTimer();
@@ -190,11 +191,13 @@ public class PointerTracker {
         */
        showKeyPreviewAndUpdateKey(isMinorTimeBounce() ? mLastKey : mCurrentKey);
        updateMoveDebouncing(touchX, touchY);
        if (DEBUG_MOVE)
            debugLog("onMoveEvent:", touchX, touchY);
    }

    public void onUpEvent(int touchX, int touchY, long eventTime) {
        if (DEBUG)
            Log.d(TAG, "onUpEvent: [" + mPointerId + "] modifier=" + isModifier());
            debugLog("onUpEvent  :", touchX, touchY);
        int keyIndex = mKeyDetector.getKeyIndexAndNearbyCodes(touchX, touchY, null);
        boolean wasInKeyRepeat = mHandler.isInKeyRepeat();
        mHandler.cancelKeyTimers();
@@ -222,7 +225,7 @@ public class PointerTracker {

    public void onCancelEvent(int touchX, int touchY, long eventTime) {
        if (DEBUG)
            Log.d(TAG, "onCancelEvent: [" + mPointerId + "]");
            debugLog("onCancelEvt:", touchX, touchY);
        mHandler.cancelKeyTimers();
        mHandler.cancelPopupPreview();
        mProxy.dismissPopupKeyboard();
@@ -412,4 +415,18 @@ public class PointerTracker {
            resetMultiTap();
        }
    }

    private void debugLog(String title, int x, int y) {
        Key key = getKey(mCurrentKey);
        final String code;
        if (key == null) {
            code = "----";
        } else {
            int primaryCode = key.codes[0];
            code = String.format((primaryCode < 0) ? "%4d" : "0x%02x", primaryCode);
        }
         Log.d(TAG,
                String.format("%s [%d] %d,%d %s %s", title, mPointerId, x, y, code,
                        isModifier() ? "modifier" : ""));
    }
}
 No newline at end of file