bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=38641ecd9be4cd8b50dcdd978b7a2e6cdc7c960d

commit 38641ecd9be4cd8b50dcdd978b7a2e6cdc7c960d
Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Jan 17 10:18:23 2020 -0500

    efl/gesture: add touch_count property for gesture event info
    
    this allows us to provide the number of touch points active in any gesture
    so we can detect e.g., double-tap with two fingers
    
    Reviewed-by: woochan lee <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D11126
---
 src/lib/evas/gesture/efl_canvas_gesture.c         | 13 +++++++++++++
 src/lib/evas/gesture/efl_canvas_gesture.eo        | 10 ++++++++++
 src/lib/evas/gesture/efl_canvas_gesture_manager.c |  4 ++++
 src/lib/evas/gesture/efl_canvas_gesture_private.h |  1 +
 src/lib/evas/gesture/efl_canvas_gesture_touch.c   |  6 ++++++
 src/lib/evas/gesture/efl_canvas_gesture_touch.eo  |  8 ++++++++
 6 files changed, 42 insertions(+)

diff --git a/src/lib/evas/gesture/efl_canvas_gesture.c 
b/src/lib/evas/gesture/efl_canvas_gesture.c
index 077bc9b527..231bc865a0 100644
--- 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 @@ _efl_canvas_gesture_timestamp_get(const Eo *obj EINA_UNUSED, 
Efl_Canvas_Gesture_
    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
index 22334e245e..26aef89af8 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture.eo
+++ b/src/lib/evas/gesture/efl_canvas_gesture.eo
@@ -46,5 +46,15 @@ abstract @beta Efl.Canvas.Gesture extends Efl.Object
             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
index 5a28b04fbf..db2b3c16a2 100644
--- 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 @@ _efl_canvas_gesture_manager_filter_event(void *data, Eo 
*target, void *event)
              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
index 45c13a7776..f77530ff98 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_private.h
+++ b/src/lib/evas/gesture/efl_canvas_gesture_private.h
@@ -130,6 +130,7 @@ struct _Efl_Canvas_Gesture_Data
    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
index 3ed9dfe2b2..3e90b7d751 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_touch.c
+++ b/src/lib/evas/gesture/efl_canvas_gesture_touch.c
@@ -122,6 +122,12 @@ _efl_canvas_gesture_touch_multi_touch_get(const Eo *obj 
EINA_UNUSED, Efl_Canvas_
    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
index a12d26d3b9..ed9949ea17 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_touch.eo
+++ b/src/lib/evas/gesture/efl_canvas_gesture_touch.eo
@@ -60,6 +60,14 @@ class @beta Efl.Canvas.Gesture_Touch extends Efl.Object
             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 {

-- 


Reply via email to