From 73d2589d6df34307c22f1adcdfa1debf4c780ecc Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Tue, 9 Jun 2009 03:18:10 -0700 Subject: [PATCH] Fix multiple strokes support when fade is disabled. Multiple strokes would always be accepted after the first one. --- .../android/gesture/GestureOverlayView.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/core/java/android/gesture/GestureOverlayView.java b/core/java/android/gesture/GestureOverlayView.java index 12519648d034a..0d0fbb59e75f5 100755 --- a/core/java/android/gesture/GestureOverlayView.java +++ b/core/java/android/gesture/GestureOverlayView.java @@ -96,6 +96,7 @@ public class GestureOverlayView extends FrameLayout { private boolean mPreviousWasGesturing = false; private boolean mInterceptEvents = true; private boolean mIsListeningForGestures; + private boolean mResetGesture; // current gesture private Gesture mCurrentGesture; @@ -372,7 +373,9 @@ public class GestureOverlayView extends FrameLayout { private void clear(boolean animated, boolean fireActionPerformed) { setPaintAlpha(255); removeCallbacks(mFadingOut); + mResetGesture = false; mFadingOut.fireActionPerformed = fireActionPerformed; + mFadingOut.resetMultipleStrokes = false; if (animated && mCurrentGesture != null) { mFadingAlpha = 1.0f; @@ -387,11 +390,14 @@ public class GestureOverlayView extends FrameLayout { mFadingHasStarted = false; if (fireActionPerformed) { - post(mFadingOut); - } else { + postDelayed(mFadingOut, mFadeOffset); + } else if (mHandleGestureActions) { mCurrentGesture = null; mPath.rewind(); invalidate(); + } else if (mGestureStrokeType == GESTURE_STROKE_TYPE_MULTIPLE) { + mFadingOut.resetMultipleStrokes = true; + postDelayed(mFadingOut, mFadeOffset); } } } @@ -507,8 +513,9 @@ public class GestureOverlayView extends FrameLayout { mTotalLength = 0; mIsGesturing = false; - if (mGestureStrokeType == GESTURE_STROKE_TYPE_SINGLE) { + if (mGestureStrokeType == GESTURE_STROKE_TYPE_SINGLE || mResetGesture) { if (mHandleGestureActions) setCurrentColor(mUncertainGestureColor); + mResetGesture = false; mCurrentGesture = null; mPath.rewind(); } else if (mCurrentGesture == null || mCurrentGesture.getStrokesCount() == 0) { @@ -640,9 +647,7 @@ public class GestureOverlayView extends FrameLayout { listeners.get(i).onGestureEnded(this, event); } - if (mHandleGestureActions) { - clear(mFadeEnabled, mIsGesturing); - } + clear(mHandleGestureActions && mFadeEnabled, mHandleGestureActions && mIsGesturing); } else { cancelGesture(event); @@ -683,6 +688,7 @@ public class GestureOverlayView extends FrameLayout { private class FadeOutRunnable implements Runnable { boolean fireActionPerformed; + boolean resetMultipleStrokes; public void run() { if (mIsFadingOut) { @@ -708,6 +714,8 @@ public class GestureOverlayView extends FrameLayout { setPaintAlpha((int) (255 * mFadingAlpha)); postDelayed(this, FADE_ANIMATION_RATE); } + } else if (resetMultipleStrokes) { + mResetGesture = true; } else { fireOnGesturePerformed();