Skip to content

Commit 145ab7f

Browse files
committed
Fix triggering of single/double tap action when performing system navigation gesture
In that case we receive ACTION_CANCEL event and don't want to trigger tap actions.
1 parent 517cb40 commit 145ab7f

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

src/main/java/org/quantumbadger/redreader/views/imageview/BasicGestureHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public void onFingersMoved() {
7171
}
7272

7373
@Override
74-
public void onFingerUp(final FingerTracker.Finger finger) {
74+
public void onFingerUp(final FingerTracker.Finger finger, final boolean cancelled) {
7575

7676
mCurrentFingerCount--;
7777

@@ -80,7 +80,8 @@ public void onFingerUp(final FingerTracker.Finger finger) {
8080
mListener.onHorizontalSwipeEnd();
8181

8282
// TODO
83-
if(mFirstFinger.mDownDuration < 300
83+
if(!cancelled
84+
&& mFirstFinger.mDownDuration < 300
8485
&& mFirstFinger.mPosDifference.x < 20
8586
&& mFirstFinger.mPosDifference.y < 20) {
8687

src/main/java/org/quantumbadger/redreader/views/imageview/FingerTracker.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public interface FingerListener {
2929

3030
void onFingersMoved();
3131

32-
void onFingerUp(Finger finger);
32+
void onFingerUp(Finger finger, boolean cancelled);
3333
}
3434

3535
private final Finger[] mFingers = new Finger[10];
@@ -85,7 +85,7 @@ public void onTouchEvent(final MotionEvent event) {
8585
for(final Finger f : mFingers) {
8686
if(f.mActive && f.mAndroidId == id) {
8787
f.onUp(event);
88-
mListener.onFingerUp(f);
88+
mListener.onFingerUp(f, false);
8989
break;
9090
}
9191
}
@@ -101,7 +101,7 @@ public void onTouchEvent(final MotionEvent event) {
101101
for(final Finger f : mFingers) {
102102
if(f.mActive) {
103103
f.onUp(event);
104-
mListener.onFingerUp(f);
104+
mListener.onFingerUp(f, true);
105105
}
106106
}
107107

src/main/java/org/quantumbadger/redreader/views/imageview/ImageViewDisplayListManager.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,10 @@ public synchronized void onFingersMoved() {
477477
}
478478

479479
@Override
480-
public synchronized void onFingerUp(final FingerTracker.Finger finger) {
480+
public synchronized void onFingerUp(
481+
final FingerTracker.Finger finger,
482+
final boolean cancelled
483+
) {
481484

482485
if(mScrollbars == null) {
483486
return;
@@ -498,7 +501,7 @@ public synchronized void onFingerUp(final FingerTracker.Finger finger) {
498501

499502
case DOUBLE_TAP_ONE_FINGER_DOWN:
500503

501-
if(finger.mDownDuration < TAP_MAX_DURATION_MS) {
504+
if(!cancelled && finger.mDownDuration < TAP_MAX_DURATION_MS) {
502505
onDoubleTap(finger.mCurrentPos);
503506
}
504507

@@ -508,7 +511,7 @@ public synchronized void onFingerUp(final FingerTracker.Finger finger) {
508511

509512
case ONE_FINGER_DOWN:
510513

511-
if(finger.mDownDuration < TAP_MAX_DURATION_MS) {
514+
if(!cancelled && finger.mDownDuration < TAP_MAX_DURATION_MS) {
512515

513516
// Maybe a single tap
514517
mDoubleTapGapTimer.startTimer();

0 commit comments

Comments
 (0)