From 7c11590b941170fb1db7d617b4ff8c4752800eb2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Sat, 3 Jan 2015 11:49:07 -0500 Subject: [PATCH] android: add `AndroidPointerEvent::just_went_down` for `friendz` MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- contrib/friendz/src/friendz_android.nit | 2 +- lib/android/input_events.nit | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/contrib/friendz/src/friendz_android.nit b/contrib/friendz/src/friendz_android.nit index 94b9d2b..6060be2 100644 --- a/contrib/friendz/src/friendz_android.nit +++ b/contrib/friendz/src/friendz_android.nit @@ -23,5 +23,5 @@ redef class App end redef class AndroidPointerEvent - redef fun is_motion do return not motion_event.just_went_down + redef fun is_motion do return not just_went_down end diff --git a/lib/android/input_events.nit b/lib/android/input_events.nit index 48c2d72..c766a16 100644 --- a/lib/android/input_events.nit +++ b/lib/android/input_events.nit @@ -57,6 +57,7 @@ private extern class NativeAndroidMotionEvent `{AInputEvent *`} return AMotionEvent_getPointerCount(recv); `} + # Did this motion event just started? fun just_went_down: Bool `{ return (AMotionEvent_getAction(recv) & AMOTION_EVENT_ACTION_MASK) == AMOTION_EVENT_ACTION_DOWN; `} @@ -65,6 +66,7 @@ private extern class NativeAndroidMotionEvent `{AInputEvent *`} return AMotionEvent_getEdgeFlags(recv); `} + # Get the non-primary pointer id that just went down (returns -1 or > 0) fun index_down_pointer: Int `{ int a = AMotionEvent_getAction(recv); if ((a & AMOTION_EVENT_ACTION_MASK) == AMOTION_EVENT_ACTION_POINTER_DOWN) @@ -134,8 +136,14 @@ class AndroidMotionEvent redef fun down_pointer: nullable AndroidPointerEvent do + if just_went_down then + # The primary pointer went down + return pointers[0] + end + var i = native.index_down_pointer if i > 0 then + # A secondary pointer went down return pointers[i] else return null @@ -178,6 +186,12 @@ class AndroidPointerEvent end redef fun depressed do return not pressed + + # Does this pointer just began touching the screen? + fun just_went_down: Bool + do + return motion_event.down_pointer == self + end end # An hardware key event -- 1.7.9.5