diff options
| author | Dianne Hackborn <hackbod@google.com> | 2009-09-14 21:21:52 -0700 |
|---|---|---|
| committer | Dianne Hackborn <hackbod@google.com> | 2009-09-14 21:21:52 -0700 |
| commit | 8d37426c754e9822feaa8c6cc0b7c13e8523e217 (patch) | |
| tree | 188470dc3254756b9a6bc345f9cf39171a6b3725 /core/java/android/view/KeyEvent.java | |
| parent | 83fe3f559249451706957b1a5f660b2b8272f114 (diff) | |
Various fixed for back key handling.
My last change was far from perfect. Hopefully this gets us
a little closer.
Change-Id: I413e55b6af42400b565de3040859d25d668bc9d2
Diffstat (limited to 'core/java/android/view/KeyEvent.java')
| -rw-r--r-- | core/java/android/view/KeyEvent.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java index daa4b295a0f4..d4f978756f4d 100644 --- a/core/java/android/view/KeyEvent.java +++ b/core/java/android/view/KeyEvent.java @@ -18,6 +18,7 @@ package android.view; import android.os.Parcel; import android.os.Parcelable; +import android.util.Log; import android.util.SparseIntArray; import android.view.KeyCharacterMap; import android.view.KeyCharacterMap.KeyData; @@ -319,6 +320,9 @@ public class KeyEvent implements Parcelable { return KeyCharacterMap.getDeadChar(accent, c); } + static final boolean DEBUG = false; + static final String TAG = "KeyEvent"; + private int mMetaState; private int mAction; private int mKeyCode; @@ -1028,13 +1032,17 @@ public class KeyEvent implements Parcelable { switch (mAction) { case ACTION_DOWN: { mFlags &= ~FLAG_START_TRACKING; + if (DEBUG) Log.v(TAG, "Key down to " + target + " in " + state + + ": " + this); boolean res = receiver.onKeyDown(mKeyCode, this); if (state != null) { if (res && mRepeatCount == 0 && (mFlags&FLAG_START_TRACKING) != 0) { + if (DEBUG) Log.v(TAG, " Start tracking!"); state.startTracking(this, target); } else if (isLongPress() && state.isTracking(this)) { try { if (receiver.onKeyLongPress(mKeyCode, this)) { + if (DEBUG) Log.v(TAG, " Clear from long press!"); state.performedLongPress(this); res = true; } @@ -1045,6 +1053,8 @@ public class KeyEvent implements Parcelable { return res; } case ACTION_UP: + if (DEBUG) Log.v(TAG, "Key up to " + target + " in " + state + + ": " + this); if (state != null) { state.handleUpEvent(this); } @@ -1085,6 +1095,7 @@ public class KeyEvent implements Parcelable { * Reset back to initial state. */ public void reset() { + if (DEBUG) Log.v(TAG, "Reset: " + this); mDownKeyCode = 0; mDownTarget = null; mActiveLongPresses.clear(); @@ -1095,6 +1106,7 @@ public class KeyEvent implements Parcelable { */ public void reset(Object target) { if (mDownTarget == target) { + if (DEBUG) Log.v(TAG, "Reset in " + target + ": " + this); mDownKeyCode = 0; mDownTarget = null; } @@ -1115,6 +1127,7 @@ public class KeyEvent implements Parcelable { throw new IllegalArgumentException( "Can only start tracking on a down event"); } + if (DEBUG) Log.v(TAG, "Start trackingt in " + target + ": " + this); mDownKeyCode = event.getKeyCode(); mDownTarget = target; } @@ -1145,12 +1158,15 @@ public class KeyEvent implements Parcelable { */ public void handleUpEvent(KeyEvent event) { final int keyCode = event.getKeyCode(); + if (DEBUG) Log.v(TAG, "Handle key up " + event + ": " + this); int index = mActiveLongPresses.indexOfKey(keyCode); if (index >= 0) { + if (DEBUG) Log.v(TAG, " Index: " + index); event.mFlags |= FLAG_CANCELED | FLAG_CANCELED_LONG_PRESS; mActiveLongPresses.removeAt(index); } if (mDownKeyCode == keyCode) { + if (DEBUG) Log.v(TAG, " Tracking!"); event.mFlags |= FLAG_TRACKING; mDownKeyCode = 0; mDownTarget = null; |
