Skip to content

Commit

Permalink
FIX: ClickDetector was claiming to handle touch event when it did not
Browse files Browse the repository at this point in the history
When click was NOT handled due to too long time it took (callback was not fired),
ClickDetector returned true from onManagedTouchEvent(). It resulted in loosing
some ACTION_UP events.
  • Loading branch information
nazgee committed May 6, 2012
1 parent 5506b9a commit a40af13
Showing 1 changed file with 15 additions and 13 deletions.
28 changes: 15 additions & 13 deletions src/org/andengine/input/touch/detector/ClickDetector.java
Expand Up @@ -71,19 +71,21 @@ public boolean onManagedTouchEvent(final TouchEvent pSceneTouchEvent) {
return true;
case TouchEvent.ACTION_UP:
case TouchEvent.ACTION_CANCEL:
if(this.mPointerID == pSceneTouchEvent.getPointerID()) {
final long upTimeMilliseconds = pSceneTouchEvent.getMotionEvent().getEventTime();

if(upTimeMilliseconds - this.mDownTimeMilliseconds <= this.mTriggerClickMaximumMilliseconds) {
this.mDownTimeMilliseconds = Long.MIN_VALUE;
this.mClickDetectorListener.onClick(this, pSceneTouchEvent.getPointerID(), pSceneTouchEvent.getX(), pSceneTouchEvent.getY());
}

this.mPointerID = TouchEvent.INVALID_POINTER_ID;
return true;
} else {
return false;
}
if (this.mPointerID == pSceneTouchEvent.getPointerID()) {
boolean handled = false;
final long upTimeMilliseconds = pSceneTouchEvent.getMotionEvent().getEventTime();

if (upTimeMilliseconds - this.mDownTimeMilliseconds <= this.mTriggerClickMaximumMilliseconds) {
this.mDownTimeMilliseconds = Long.MIN_VALUE;
this.mClickDetectorListener.onClick(this, pSceneTouchEvent.getPointerID(), pSceneTouchEvent.getX(), pSceneTouchEvent.getY());
handled = true;
}

this.mPointerID = TouchEvent.INVALID_POINTER_ID;
return handled;
} else {
return false;
}
default:
return false;
}
Expand Down

0 comments on commit a40af13

Please sign in to comment.