diff --git a/src/lib/evas/gesture/efl_canvas_gesture.c b/src/lib/evas/gesture/efl_canvas_gesture.c --- a/src/lib/evas/gesture/efl_canvas_gesture.c +++ b/src/lib/evas/gesture/efl_canvas_gesture.c @@ -1,3 +1,4 @@ +#define EFL_CANVAS_GESTURE_PROTECTED #include "efl_canvas_gesture_private.h" #define MY_CLASS EFL_CANVAS_GESTURE_CLASS @@ -46,5 +47,17 @@ return pd->timestamp; } +EOLIAN static void +_efl_canvas_gesture_touch_count_set(Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Data *pd, unsigned int touch_count) +{ + pd->touch_count = touch_count; +} + +EOLIAN static unsigned int +_efl_canvas_gesture_touch_count_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Data *pd) +{ + return pd->touch_count; +} + #include "efl_canvas_gesture.eo.c" #include "efl_canvas_gesture_events.eo.c" diff --git a/src/lib/evas/gesture/efl_canvas_gesture.eo b/src/lib/evas/gesture/efl_canvas_gesture.eo --- a/src/lib/evas/gesture/efl_canvas_gesture.eo +++ b/src/lib/evas/gesture/efl_canvas_gesture.eo @@ -46,5 +46,15 @@ timestamp: uint;[[The time-stamp.]] } } + @property touch_count { + [[The current number of touch points recorded in the gesture.]] + get { + } + set @protected { + } + values { + touch_count: uint;[[The count of the touch points.]] + } + } } } diff --git a/src/lib/evas/gesture/efl_canvas_gesture_manager.c b/src/lib/evas/gesture/efl_canvas_gesture_manager.c --- a/src/lib/evas/gesture/efl_canvas_gesture_manager.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_manager.c @@ -1,3 +1,4 @@ +#define EFL_CANVAS_GESTURE_PROTECTED #include "efl_canvas_gesture_private.h" #define MY_CLASS EFL_CANVAS_GESTURE_MANAGER_CLASS @@ -192,6 +193,9 @@ if (!gesture) continue; + /* this is the "default" value for the event, recognizers may modify it if necessary */ + efl_gesture_touch_count_set(gesture, efl_gesture_touch_points_count_get(touch_event)); + //Gesture detecting. recog_result = efl_gesture_recognizer_recognize(recognizer, gesture, target, touch_event); recog_state = recog_result & EFL_GESTURE_RECOGNIZER_RESULT_RESULT_MASK; diff --git a/src/lib/evas/gesture/efl_canvas_gesture_private.h b/src/lib/evas/gesture/efl_canvas_gesture_private.h --- a/src/lib/evas/gesture/efl_canvas_gesture_private.h +++ b/src/lib/evas/gesture/efl_canvas_gesture_private.h @@ -133,6 +133,7 @@ Efl_Canvas_Gesture_State state; Eina_Position2D hotspot; unsigned int timestamp; + unsigned int touch_count; }; struct _Efl_Canvas_Gesture_Momentum_Data diff --git a/src/lib/evas/gesture/efl_canvas_gesture_touch.c b/src/lib/evas/gesture/efl_canvas_gesture_touch.c --- a/src/lib/evas/gesture/efl_canvas_gesture_touch.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_touch.c @@ -122,6 +122,12 @@ return pd->multi_touch; } +EOLIAN static unsigned int +_efl_canvas_gesture_touch_touch_points_count_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Touch_Data *pd) +{ + return pd->touch_down; +} + EOLIAN static const Efl_Gesture_Touch_Point_Data * _efl_canvas_gesture_touch_cur_data_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Touch_Data *pd) { diff --git a/src/lib/evas/gesture/efl_canvas_gesture_touch.eo b/src/lib/evas/gesture/efl_canvas_gesture_touch.eo --- a/src/lib/evas/gesture/efl_canvas_gesture_touch.eo +++ b/src/lib/evas/gesture/efl_canvas_gesture_touch.eo @@ -60,6 +60,14 @@ return: bool; [[returns $true if its a multi touch]] } } + @property touch_points_count { + [[This provides the number of touch points active.]] + get { + } + values { + touch_count: uint; [[The number of active touch points.]] + } + } @property state { [[This property holds the state of the touch event.]] get {