From 980fa732f7e949dddf38d748d93920bbe7c765fc Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Sun, 28 Apr 2024 13:17:33 -0400 Subject: [PATCH] ActorGestureListener, don't hold event reference, reset longPressTask, clean up. --- .../badlogic/gdx/input/GestureDetector.java | 1 + .../scene2d/utils/ActorGestureListener.java | 21 +++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/gdx/src/com/badlogic/gdx/input/GestureDetector.java b/gdx/src/com/badlogic/gdx/input/GestureDetector.java index b6d2a3abd90..582f05db76b 100644 --- a/gdx/src/com/badlogic/gdx/input/GestureDetector.java +++ b/gdx/src/com/badlogic/gdx/input/GestureDetector.java @@ -265,6 +265,7 @@ public boolean isPanning () { } public void reset () { + longPressTask.cancel(); touchDownTime = 0; panning = false; inTapRectangle = false; diff --git a/gdx/src/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.java b/gdx/src/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.java index f4bd6102f77..d511beea101 100644 --- a/gdx/src/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.java +++ b/gdx/src/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.java @@ -116,20 +116,20 @@ public boolean handle (Event e) { event.getPointer(), event.getButton()); return true; case touchUp: - if (event.isTouchFocusCancel()) { + boolean touchFocusCancel = event.isTouchFocusCancel(); + if (touchFocusCancel) detector.reset(); - actor = null; - touchDownTarget = null; - return false; + else { + this.event = event; + actor = event.getListenerActor(); + detector.touchUp(event.getStageX(), event.getStageY(), event.getPointer(), event.getButton()); + actor.stageToLocalCoordinates(tmpCoords.set(event.getStageX(), event.getStageY())); + touchUp(event, tmpCoords.x, tmpCoords.y, event.getPointer(), event.getButton()); } - this.event = event; - actor = event.getListenerActor(); - detector.touchUp(event.getStageX(), event.getStageY(), event.getPointer(), event.getButton()); - actor.stageToLocalCoordinates(tmpCoords.set(event.getStageX(), event.getStageY())); - touchUp(event, tmpCoords.x, tmpCoords.y, event.getPointer(), event.getButton()); + this.event = null; actor = null; touchDownTarget = null; - return true; + return !touchFocusCancel; case touchDragged: this.event = event; actor = event.getListenerActor(); @@ -174,7 +174,6 @@ public GestureDetector getGestureDetector () { return detector; } - /** Returns null if there is no current touch down. */ public @Null Actor getTouchDownTarget () { return touchDownTarget; }