bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=93abc9cbeb82e118fdeee85b59a931c92c115415

commit 93abc9cbeb82e118fdeee85b59a931c92c115415
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Tue Feb 11 10:29:11 2020 -0500

    efl/gesture: rework custom gesture recognizer methodology
    
    this needs to return the actual gesture class type so that custom gesture
    events can implement their own properties if necessary
    
    Reviewed-by: woochan lee <wc0917....@samsung.com>
    Differential Revision: https://phab.enlightenment.org/D11322
---
 src/lib/evas/gesture/efl_canvas_gesture_custom.eo  |  4 +-
 src/lib/evas/gesture/efl_canvas_gesture_manager.c  | 71 ++++++----------------
 .../evas/gesture/efl_canvas_gesture_recognizer.eo  |  4 +-
 .../gesture/efl_canvas_gesture_recognizer_custom.c |  4 +-
 .../efl_canvas_gesture_recognizer_double_tap.c     |  4 +-
 .../gesture/efl_canvas_gesture_recognizer_flick.c  |  4 +-
 .../efl_canvas_gesture_recognizer_long_tap.c       |  4 +-
 .../efl_canvas_gesture_recognizer_momentum.c       |  4 +-
 .../gesture/efl_canvas_gesture_recognizer_tap.c    |  4 +-
 .../efl_canvas_gesture_recognizer_triple_tap.c     |  4 +-
 .../gesture/efl_canvas_gesture_recognizer_zoom.c   |  4 +-
 11 files changed, 39 insertions(+), 72 deletions(-)

diff --git a/src/lib/evas/gesture/efl_canvas_gesture_custom.eo 
b/src/lib/evas/gesture/efl_canvas_gesture_custom.eo
index 4e4f3ae3d0..b344801e95 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_custom.eo
+++ b/src/lib/evas/gesture/efl_canvas_gesture_custom.eo
@@ -1,4 +1,5 @@
 import eina_types;
+parse efl_canvas_gesture_recognizer;
 
 class @beta Efl.Canvas.Gesture_Custom extends Efl.Canvas.Gesture
 {
@@ -9,7 +10,8 @@ class @beta Efl.Canvas.Gesture_Custom extends 
Efl.Canvas.Gesture
      Application developers receive these objects inside a gesture event and 
do not typically need to create their own.
 
      Custom gesture recognizers which implement their own gesture properties 
(e.g., gesture momentum or angle) must
-     inherit this class.
+     inherit this class, and their recognizers must implement the 
@Efl.Canvas.Gesture_Recognizer.type property to return
+     this class.
    ]]
    c_prefix: efl_gesture_custom;
    methods {
diff --git a/src/lib/evas/gesture/efl_canvas_gesture_manager.c 
b/src/lib/evas/gesture/efl_canvas_gesture_manager.c
index da6d8308b0..2bee20c248 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_manager.c
+++ b/src/lib/evas/gesture/efl_canvas_gesture_manager.c
@@ -39,60 +39,25 @@ static Efl_Canvas_Gesture *
 static const Efl_Event_Description *
 _gesture_recognizer_event_type_get(const Efl_Canvas_Gesture_Recognizer 
*recognizer)
 {
-   Efl_Canvas_Gesture_Recognizer_Type type = 
efl_gesture_recognizer_type_get(recognizer);
-
-   switch (type)
-     {
-      case EFL_GESTURE_RECOGNIZER_TYPE_TAP:
-        return EFL_EVENT_GESTURE_TAP;
-      case EFL_GESTURE_RECOGNIZER_TYPE_DOUBLE_TAP:
-        return EFL_EVENT_GESTURE_DOUBLE_TAP;
-      case EFL_GESTURE_RECOGNIZER_TYPE_TRIPLE_TAP:
-        return EFL_EVENT_GESTURE_TRIPLE_TAP;
-      case EFL_GESTURE_RECOGNIZER_TYPE_LONG_TAP:
-        return EFL_EVENT_GESTURE_LONG_TAP;
-      case EFL_GESTURE_RECOGNIZER_TYPE_MOMENTUM:
-        return EFL_EVENT_GESTURE_MOMENTUM;
-      case EFL_GESTURE_RECOGNIZER_TYPE_FLICK:
-        return EFL_EVENT_GESTURE_FLICK;
-      case EFL_GESTURE_RECOGNIZER_TYPE_ZOOM:
-        return EFL_EVENT_GESTURE_ZOOM;
-      case EFL_GESTURE_RECOGNIZER_TYPE_CUSTOM:
-        return EFL_EVENT_GESTURE_CUSTOM;
-      default: break;
-     }
-   return NULL;
-}
-
-static const Efl_Class *
-_gesture_recognizer_class_type_get(const Efl_Canvas_Gesture_Recognizer 
*recognizer)
-{
-   Efl_Canvas_Gesture_Recognizer_Type type = 
efl_gesture_recognizer_type_get(recognizer);
-
-   switch (type)
-     {
-      case EFL_GESTURE_RECOGNIZER_TYPE_TAP:
-        return EFL_CANVAS_GESTURE_TAP_CLASS;
-      case EFL_GESTURE_RECOGNIZER_TYPE_DOUBLE_TAP:
-        return EFL_CANVAS_GESTURE_DOUBLE_TAP_CLASS;
-      case EFL_GESTURE_RECOGNIZER_TYPE_TRIPLE_TAP:
-        return EFL_CANVAS_GESTURE_TRIPLE_TAP_CLASS;
-      case EFL_GESTURE_RECOGNIZER_TYPE_LONG_TAP:
-        return EFL_CANVAS_GESTURE_LONG_TAP_CLASS;
-      case EFL_GESTURE_RECOGNIZER_TYPE_MOMENTUM:
-        return EFL_CANVAS_GESTURE_MOMENTUM_CLASS;
-      case EFL_GESTURE_RECOGNIZER_TYPE_FLICK:
-        return EFL_CANVAS_GESTURE_FLICK_CLASS;
-      case EFL_GESTURE_RECOGNIZER_TYPE_ZOOM:
-        return EFL_CANVAS_GESTURE_ZOOM_CLASS;
-      case EFL_GESTURE_RECOGNIZER_TYPE_CUSTOM:
-        return EFL_CANVAS_GESTURE_CUSTOM_CLASS;
-      default: break;
-     }
-   return NULL;
+   const Efl_Class *type = efl_gesture_recognizer_type_get(recognizer);
+
+   if (type == EFL_CANVAS_GESTURE_TAP_CLASS)
+     return EFL_EVENT_GESTURE_TAP;
+   if (type == EFL_CANVAS_GESTURE_DOUBLE_TAP_CLASS)
+     return EFL_EVENT_GESTURE_DOUBLE_TAP;
+   if (type == EFL_CANVAS_GESTURE_TRIPLE_TAP_CLASS)
+     return EFL_EVENT_GESTURE_TRIPLE_TAP;
+   if (type == EFL_CANVAS_GESTURE_LONG_TAP_CLASS)
+     return EFL_EVENT_GESTURE_LONG_TAP;
+   if (type == EFL_CANVAS_GESTURE_MOMENTUM_CLASS)
+     return EFL_EVENT_GESTURE_MOMENTUM;
+   if (type == EFL_CANVAS_GESTURE_FLICK_CLASS)
+     return EFL_EVENT_GESTURE_FLICK;
+   if (type == EFL_CANVAS_GESTURE_ZOOM_CLASS)
+     return EFL_EVENT_GESTURE_ZOOM;
+   return EFL_EVENT_GESTURE_CUSTOM;
 }
 
-
 static void
 _cleanup_object(Eina_Array *arr)
 {
@@ -503,7 +468,7 @@ _get_state(Efl_Canvas_Gesture_Manager_Data *pd,
           }
      }
 
-   gesture = efl_add(_gesture_recognizer_class_type_get(recognizer), 
recognizer);
+   gesture = efl_add(efl_gesture_recognizer_type_get(recognizer), recognizer);
    if (!gesture)
      return 0;
 
diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer.eo 
b/src/lib/evas/gesture/efl_canvas_gesture_recognizer.eo
index c9801629ff..d03447f934 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer.eo
+++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer.eo
@@ -14,11 +14,11 @@ abstract @beta Efl.Canvas.Gesture_Recognizer extends 
Efl.Object
    c_prefix: efl_gesture_recognizer;
    methods {
       @property type @pure_virtual {
-         [[This property returns the type of gesture recognized by this 
recognizer.
+         [[This property returns the class type of gesture recognized by this 
recognizer.
            It must be implemented for the recognizer to function.]]
          get {}
          values {
-            type: Efl.Canvas.Gesture_Recognizer_Type; [[The gesture type to 
recognize.]]
+            type: const(Efl.Class); [[The gesture type to recognize.]]
          }
       }
       recognize @pure_virtual {
diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_custom.c 
b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_custom.c
index 4dfe56944a..e91b195e3d 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_custom.c
+++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_custom.c
@@ -2,10 +2,10 @@
 
 #define MY_CLASS EFL_CANVAS_GESTURE_RECOGNIZER_CUSTOM_CLASS
 
-EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
+EOLIAN static const Efl_Class *
 
_efl_canvas_gesture_recognizer_custom_efl_canvas_gesture_recognizer_type_get(const
 Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Custom_Data *pd EINA_UNUSED)
 {
-   return EFL_GESTURE_RECOGNIZER_TYPE_CUSTOM;
+   return EFL_CANVAS_GESTURE_CUSTOM_CLASS;
 }
 
 EOLIAN static Eo *
diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_double_tap.c 
b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_double_tap.c
index bf1791a549..c7b53110e2 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_double_tap.c
+++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_double_tap.c
@@ -4,10 +4,10 @@
 
 #define TAP_TIME_OUT 0.33
 
-EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
+EOLIAN static const Efl_Class *
 
_efl_canvas_gesture_recognizer_double_tap_efl_canvas_gesture_recognizer_type_get(const
 Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Double_Tap_Data *pd 
EINA_UNUSED)
 {
-   return EFL_GESTURE_RECOGNIZER_TYPE_DOUBLE_TAP;
+   return EFL_CANVAS_GESTURE_DOUBLE_TAP_CLASS;
 }
 
 EOLIAN static void
diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_flick.c 
b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_flick.c
index 2c459482c2..6736e39a45 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_flick.c
+++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_flick.c
@@ -22,10 +22,10 @@ _reset_recognizer(Efl_Canvas_Gesture_Recognizer_Flick_Data 
*pd)
    pd->touched = EINA_FALSE;
 }
 
-EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
+EOLIAN static const Efl_Class *
 
_efl_canvas_gesture_recognizer_flick_efl_canvas_gesture_recognizer_type_get(const
 Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Flick_Data *pd EINA_UNUSED)
 {
-   return EFL_GESTURE_RECOGNIZER_TYPE_FLICK;
+   return EFL_CANVAS_GESTURE_FLICK_CLASS;
 }
 
 static void
diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_long_tap.c 
b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_long_tap.c
index 3e2d3f3f96..5b173858fa 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_long_tap.c
+++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_long_tap.c
@@ -4,10 +4,10 @@
 
 #define EFL_GESTURE_LONG_TAP_TIME_OUT 1.2
 
-EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
+EOLIAN static const Efl_Class *
 
_efl_canvas_gesture_recognizer_long_tap_efl_canvas_gesture_recognizer_type_get(const
 Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Long_Tap_Data *pd 
EINA_UNUSED)
 {
-   return EFL_GESTURE_RECOGNIZER_TYPE_LONG_TAP;
+   return EFL_CANVAS_GESTURE_LONG_TAP_CLASS;
 }
 
 EOLIAN static void
diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_momentum.c 
b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_momentum.c
index 90685d6400..0489147721 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_momentum.c
+++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_momentum.c
@@ -7,10 +7,10 @@
 #define THUMBSCROLL_MOMENTUM_THRESHOLD 100.0
 #define EFL_GESTURE_MINIMUM_MOMENTUM   0.001
 
-EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
+EOLIAN static const Efl_Class *
 
_efl_canvas_gesture_recognizer_momentum_efl_canvas_gesture_recognizer_type_get(const
 Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Momentum_Data *pd 
EINA_UNUSED)
 {
-   return EFL_GESTURE_RECOGNIZER_TYPE_MOMENTUM;
+   return EFL_CANVAS_GESTURE_MOMENTUM_CLASS;
 }
 
 static void
diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_tap.c 
b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_tap.c
index 4bbb00f8ce..eec8c34a22 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_tap.c
+++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_tap.c
@@ -6,10 +6,10 @@
 //       may using dobule tap timeout value?
 #define EFL_GESTURE_RECOGNIZER_TYPE_TAP_TIME_OUT 0.33
 
-EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
+EOLIAN static const Efl_Class *
 
_efl_canvas_gesture_recognizer_tap_efl_canvas_gesture_recognizer_type_get(const 
Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Tap_Data *pd EINA_UNUSED)
 {
-   return EFL_GESTURE_RECOGNIZER_TYPE_TAP;
+   return EFL_CANVAS_GESTURE_TAP_CLASS;
 }
 
 static Eina_Bool
diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_triple_tap.c 
b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_triple_tap.c
index 83d674a8ac..f79aff5f71 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_triple_tap.c
+++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_triple_tap.c
@@ -4,10 +4,10 @@
 
 #define TAP_TIME_OUT 0.33
 
-EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
+EOLIAN static const Efl_Class *
 
_efl_canvas_gesture_recognizer_triple_tap_efl_canvas_gesture_recognizer_type_get(const
 Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Triple_Tap_Data *pd 
EINA_UNUSED)
 {
-   return EFL_GESTURE_RECOGNIZER_TYPE_TRIPLE_TAP;
+   return EFL_CANVAS_GESTURE_TRIPLE_TAP_CLASS;
 }
 
 EOLIAN static void
diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_zoom.c 
b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_zoom.c
index b91811c7d3..3dd6070ae4 100644
--- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_zoom.c
+++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_zoom.c
@@ -125,10 +125,10 @@ _zoom_compute(Efl_Canvas_Gesture_Recognizer_Zoom_Data *pd,
    return rt;
 }
 
-EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
+EOLIAN static const Efl_Class *
 
_efl_canvas_gesture_recognizer_zoom_efl_canvas_gesture_recognizer_type_get(const
 Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Zoom_Data *pd EINA_UNUSED)
 {
-   return EFL_GESTURE_RECOGNIZER_TYPE_ZOOM;
+   return EFL_CANVAS_GESTURE_ZOOM_CLASS;
 }
 
 EOLIAN static Efl_Canvas_Gesture_Recognizer_Result

-- 


Reply via email to