lib/mnit & implementations: move up `is_move` from Android to abstract
[nit.git] / lib / android / input_events.nit
index 3d6fa84..34c5748 100644 (file)
@@ -17,7 +17,7 @@
 # Pointer and hardware key events
 module input_events
 
-import mnit_input
+import mnit::input
 import android
 
 in "C header" `{
@@ -57,11 +57,6 @@ private extern class NativeAndroidMotionEvent `{AInputEvent *`}
                return AMotionEvent_getPointerCount(self);
        `}
 
-       # Did this motion event just started?
-       fun just_went_down: Bool `{
-               return (AMotionEvent_getAction(self) & AMOTION_EVENT_ACTION_MASK) == AMOTION_EVENT_ACTION_DOWN;
-       `}
-
        fun edge: Int `{
                return AMotionEvent_getEdgeFlags(self);
        `}
@@ -125,7 +120,7 @@ class AndroidMotionEvent
                return new AndroidPointerEvent(self, index)
        end
 
-       redef fun just_went_down do return native.just_went_down
+       redef fun just_went_down do return native.action.is_down or native.action.is_pointer_down
 
        # Was the top edge of the screen intersected by this event?
        fun touch_to_edge: Bool do return native.edge == 1
@@ -165,13 +160,13 @@ class AndroidPointerEvent
 
        private var pointer_index: Int
 
-       redef fun x: Float do return native_x(motion_event.native, pointer_index)
+       redef fun x do return native_x(motion_event.native, pointer_index)
 
        private fun native_x(motion_event: NativeAndroidMotionEvent, pointer_index: Int): Float `{
                return AMotionEvent_getX(motion_event, pointer_index);
        `}
 
-       redef fun y: Float do return native_y(motion_event.native, pointer_index)
+       redef fun y do return native_y(motion_event.native, pointer_index)
 
        private fun native_y(motion_event: NativeAndroidMotionEvent, pointer_index: Int): Float `{
                return AMotionEvent_getY(motion_event, pointer_index);
@@ -187,16 +182,17 @@ class AndroidPointerEvent
        redef fun pressed
        do
                var action = motion_event.native.action
-               return action.is_down or action.is_move
+               return action.is_down or action.is_move or action.is_pointer_down
        end
 
+       redef fun is_move do return motion_event.acting_pointer == self and
+               motion_event.native.action.is_move
+
        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
+       fun just_went_down: Bool do return motion_event.acting_pointer == self and
+               motion_event.just_went_down
 
        # Unique id of this pointer since the beginning of the gesture
        fun pointer_id: Int do return native_pointer_id(motion_event.native, pointer_index)
@@ -213,8 +209,8 @@ extern class AndroidKeyEvent `{AInputEvent *`}
 
        private fun action: Int `{ return AKeyEvent_getAction(self); `}
 
-       redef fun is_down: Bool do return action == 0
-       redef fun is_up: Bool do return action == 1
+       redef fun is_down do return action == 0
+       redef fun is_up do return action == 1
 
        # Hardware code of the key raising this event
        fun key_code: Int `{ return AKeyEvent_getKeyCode(self); `}