forked from enlightenment/efl
efl/gesture: rework gesture_recognizer::add to be a 'type' property
this simplifies (and optimizes) a bunch of code by letting gesture recognizers return directly the type of gesture they recognize for use internally ref T8503 Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D11267
This commit is contained in:
parent
23f772b434
commit
28b7ea6f0c
|
@ -36,6 +36,63 @@ static Efl_Canvas_Gesture *
|
|||
_get_state(Efl_Canvas_Gesture_Manager_Data *pd, Eo *target,
|
||||
Efl_Canvas_Gesture_Recognizer *recognizer, const Efl_Event_Description *type);
|
||||
|
||||
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_DOUBLETAP:
|
||||
return EFL_EVENT_GESTURE_DOUBLE_TAP;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_TRIPLETAP:
|
||||
return EFL_EVENT_GESTURE_TRIPLE_TAP;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_LONGTAP:
|
||||
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_DOUBLETAP:
|
||||
return EFL_CANVAS_GESTURE_DOUBLE_TAP_CLASS;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_TRIPLETAP:
|
||||
return EFL_CANVAS_GESTURE_TRIPLE_TAP_CLASS;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_LONGTAP:
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_cleanup_object(Eina_Array *arr)
|
||||
{
|
||||
|
@ -335,13 +392,7 @@ EOLIAN static void
|
|||
_efl_canvas_gesture_manager_recognizer_register(Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Manager_Data *pd,
|
||||
Efl_Canvas_Gesture_Recognizer *recognizer)
|
||||
{
|
||||
Efl_Canvas_Gesture *dummy = efl_gesture_recognizer_add(recognizer, NULL);
|
||||
|
||||
if (!dummy)
|
||||
return;
|
||||
|
||||
const Efl_Event_Description *type = _efl_gesture_type_get(dummy);
|
||||
efl_del(dummy);
|
||||
const Efl_Event_Description *type = _gesture_recognizer_event_type_get(recognizer);
|
||||
//Add the recognizer to the m_recognizers
|
||||
if (type == EFL_EVENT_GESTURE_CUSTOM)
|
||||
{
|
||||
|
@ -363,16 +414,11 @@ _efl_canvas_gesture_manager_recognizer_unregister(Eo *obj EINA_UNUSED, Efl_Canva
|
|||
Eina_List *l, *l_next;
|
||||
Object_Gesture *object_gesture;
|
||||
const Efl_Event_Description *type;
|
||||
Efl_Canvas_Gesture *dummy;
|
||||
|
||||
if (!recognizer) return;
|
||||
|
||||
//Find the type of the recognizer
|
||||
dummy = efl_gesture_recognizer_add(recognizer, 0);
|
||||
if (!dummy) return;
|
||||
|
||||
type = _efl_gesture_type_get(dummy);
|
||||
efl_del(dummy);
|
||||
type = _gesture_recognizer_event_type_get(recognizer);
|
||||
//Check if its already registered
|
||||
if (type == EFL_EVENT_GESTURE_CUSTOM)
|
||||
{
|
||||
|
@ -457,7 +503,7 @@ _get_state(Efl_Canvas_Gesture_Manager_Data *pd,
|
|||
}
|
||||
}
|
||||
|
||||
gesture = efl_gesture_recognizer_add(recognizer, target);
|
||||
gesture = efl_add(_gesture_recognizer_class_type_get(recognizer), recognizer);
|
||||
if (!gesture)
|
||||
return 0;
|
||||
|
||||
|
@ -497,16 +543,11 @@ EOLIAN static void
|
|||
_efl_canvas_gesture_manager_recognizer_cleanup(Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Manager_Data *pd, const Efl_Canvas_Gesture_Recognizer *recognizer, const Eo *target)
|
||||
{
|
||||
const Efl_Event_Description *type;
|
||||
Efl_Canvas_Gesture *dummy;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN(recognizer);
|
||||
|
||||
//Find the type of the recognizer
|
||||
dummy = efl_gesture_recognizer_add((void*)recognizer, 0);
|
||||
EINA_SAFETY_ON_NULL_RETURN(dummy);
|
||||
|
||||
type = _efl_gesture_type_get(dummy);
|
||||
efl_del(dummy);
|
||||
type = _gesture_recognizer_event_type_get(recognizer);
|
||||
_cleanup_cached_gestures(pd, target, type, recognizer);
|
||||
eina_hash_del(pd->m_object_events, &recognizer, NULL);
|
||||
_cleanup_object(pd->m_gestures_to_delete);
|
||||
|
|
|
@ -13,12 +13,12 @@ abstract @beta Efl.Canvas.Gesture_Recognizer extends Efl.Object
|
|||
]]
|
||||
c_prefix: efl_gesture_recognizer;
|
||||
methods {
|
||||
add @pure_virtual {
|
||||
[[This function is called to create a new @Efl.Canvas.Gesture object for the given target.]]
|
||||
params {
|
||||
@in target: Efl.Object; [[The target canvas object.]]
|
||||
@property type @pure_virtual {
|
||||
[[This property returns the type of gesture recognized by this recognizer.]]
|
||||
get {}
|
||||
values {
|
||||
type: Efl.Canvas.Gesture_Recognizer_Type; [[The gesture type to recognize.]]
|
||||
}
|
||||
return: Efl.Canvas.Gesture; [[Returns the gesture object that will be used to track this gesture.]]
|
||||
}
|
||||
recognize @pure_virtual {
|
||||
[[Analyzes the given $event and the current state of the $gesture object to see if the state
|
||||
|
|
|
@ -2,6 +2,11 @@
|
|||
|
||||
#define MY_CLASS EFL_CANVAS_GESTURE_RECOGNIZER_CUSTOM_CLASS
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
_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;
|
||||
}
|
||||
|
||||
EOLIAN static Eo *
|
||||
_efl_canvas_gesture_recognizer_custom_efl_object_finalize(Eo *obj, Efl_Canvas_Gesture_Recognizer_Custom_Data *pd)
|
||||
|
|
|
@ -19,5 +19,6 @@ abstract @beta Efl.Canvas.Gesture_Recognizer_Custom extends Efl.Canvas.Gesture_R
|
|||
implements {
|
||||
Efl.Object.destructor;
|
||||
Efl.Object.finalize;
|
||||
Efl.Canvas.Gesture_Recognizer.type { get; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
#define TAP_TIME_OUT 0.33
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture *
|
||||
_efl_canvas_gesture_recognizer_double_tap_efl_canvas_gesture_recognizer_add(Eo *obj, Efl_Canvas_Gesture_Recognizer_Double_Tap_Data *pd EINA_UNUSED, Efl_Object *target EINA_UNUSED)
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
_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_add(EFL_CANVAS_GESTURE_DOUBLE_TAP_CLASS, obj);
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_DOUBLETAP;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
|
|
@ -19,7 +19,7 @@ class @beta Efl.Canvas.Gesture_Recognizer_Double_Tap extends Efl.Canvas.Gesture_
|
|||
}
|
||||
implements {
|
||||
Efl.Object.destructor;
|
||||
Efl.Canvas.Gesture_Recognizer.add;
|
||||
Efl.Canvas.Gesture_Recognizer.type { get; }
|
||||
Efl.Canvas.Gesture_Recognizer.recognize;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,10 +22,10 @@ _reset_recognizer(Efl_Canvas_Gesture_Recognizer_Flick_Data *pd)
|
|||
pd->touched = EINA_FALSE;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture *
|
||||
_efl_canvas_gesture_recognizer_flick_efl_canvas_gesture_recognizer_add(Eo *obj, Efl_Canvas_Gesture_Recognizer_Flick_Data *pd EINA_UNUSED, Efl_Object *target EINA_UNUSED)
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
_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_add(EFL_CANVAS_GESTURE_FLICK_CLASS, obj);
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_FLICK;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -6,7 +6,7 @@ class @beta Efl.Canvas.Gesture_Recognizer_Flick extends Efl.Canvas.Gesture_Recog
|
|||
]]
|
||||
c_prefix: efl_gesture_recognizer_flick;
|
||||
implements {
|
||||
Efl.Canvas.Gesture_Recognizer.add;
|
||||
Efl.Canvas.Gesture_Recognizer.type { get; }
|
||||
Efl.Canvas.Gesture_Recognizer.recognize;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,12 +4,10 @@
|
|||
|
||||
#define EFL_GESTURE_LONG_TAP_TIME_OUT 1.2
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture *
|
||||
_efl_canvas_gesture_recognizer_long_tap_efl_canvas_gesture_recognizer_add(Eo *obj,
|
||||
Efl_Canvas_Gesture_Recognizer_Long_Tap_Data *pd EINA_UNUSED,
|
||||
Efl_Object *target EINA_UNUSED)
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
_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_add(EFL_CANVAS_GESTURE_LONG_TAP_CLASS, obj);
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_LONGTAP;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
|
|
@ -19,7 +19,7 @@ class @beta Efl.Canvas.Gesture_Recognizer_Long_Tap extends Efl.Canvas.Gesture_Re
|
|||
}
|
||||
implements {
|
||||
Efl.Object.destructor;
|
||||
Efl.Canvas.Gesture_Recognizer.add;
|
||||
Efl.Canvas.Gesture_Recognizer.type { get; }
|
||||
Efl.Canvas.Gesture_Recognizer.recognize;
|
||||
Efl.Canvas.Gesture_Recognizer.reset;
|
||||
}
|
||||
|
|
|
@ -7,10 +7,10 @@
|
|||
#define THUMBSCROLL_MOMENTUM_THRESHOLD 100.0
|
||||
#define EFL_GESTURE_MINIMUM_MOMENTUM 0.001
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture *
|
||||
_efl_canvas_gesture_recognizer_momentum_efl_canvas_gesture_recognizer_add(Eo *obj, Efl_Canvas_Gesture_Recognizer_Momentum_Data *pd EINA_UNUSED, Efl_Object *target EINA_UNUSED)
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
_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_add(EFL_CANVAS_GESTURE_MOMENTUM_CLASS, obj);
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_MOMENTUM;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -6,7 +6,7 @@ class @beta Efl.Canvas.Gesture_Recognizer_Momentum extends Efl.Canvas.Gesture_Re
|
|||
]]
|
||||
c_prefix: efl_gesture_recognizer_momentum;
|
||||
implements {
|
||||
Efl.Canvas.Gesture_Recognizer.add;
|
||||
Efl.Canvas.Gesture_Recognizer.type { get; }
|
||||
Efl.Canvas.Gesture_Recognizer.recognize;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,12 +6,10 @@
|
|||
// may using dobule tap timeout value?
|
||||
#define EFL_GESTURE_RECOGNIZER_TYPE_TAP_TIME_OUT 0.33
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture *
|
||||
_efl_canvas_gesture_recognizer_tap_efl_canvas_gesture_recognizer_add(Eo *obj,
|
||||
Efl_Canvas_Gesture_Recognizer_Tap_Data *pd EINA_UNUSED,
|
||||
Efl_Object *target EINA_UNUSED)
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
_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_add(EFL_CANVAS_GESTURE_TAP_CLASS, obj);
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_TAP;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
|
|
|
@ -6,7 +6,7 @@ class @beta Efl.Canvas.Gesture_Recognizer_Tap extends Efl.Canvas.Gesture_Recogni
|
|||
]]
|
||||
c_prefix: efl_gesture_recognizer_tap;
|
||||
implements {
|
||||
Efl.Canvas.Gesture_Recognizer.add;
|
||||
Efl.Canvas.Gesture_Recognizer.type { get; }
|
||||
Efl.Canvas.Gesture_Recognizer.recognize;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
#define TAP_TIME_OUT 0.33
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture *
|
||||
_efl_canvas_gesture_recognizer_triple_tap_efl_canvas_gesture_recognizer_add(Eo *obj, Efl_Canvas_Gesture_Recognizer_Triple_Tap_Data *pd EINA_UNUSED, Efl_Object *target EINA_UNUSED)
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
_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_add(EFL_CANVAS_GESTURE_TRIPLE_TAP_CLASS, obj);
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_TRIPLETAP;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
|
|
@ -19,7 +19,7 @@ class @beta Efl.Canvas.Gesture_Recognizer_Triple_Tap extends Efl.Canvas.Gesture_
|
|||
}
|
||||
implements {
|
||||
Efl.Object.destructor;
|
||||
Efl.Canvas.Gesture_Recognizer.add;
|
||||
Efl.Canvas.Gesture_Recognizer.type { get; }
|
||||
Efl.Canvas.Gesture_Recognizer.recognize;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -125,12 +125,10 @@ _zoom_compute(Efl_Canvas_Gesture_Recognizer_Zoom_Data *pd,
|
|||
return rt;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture *
|
||||
_efl_canvas_gesture_recognizer_zoom_efl_canvas_gesture_recognizer_add(Eo *obj,
|
||||
Efl_Canvas_Gesture_Recognizer_Zoom_Data *pd EINA_UNUSED,
|
||||
Efl_Object *target EINA_UNUSED)
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
_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_add(EFL_CANVAS_GESTURE_ZOOM_CLASS, obj);
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_ZOOM;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Result
|
||||
|
|
|
@ -6,7 +6,7 @@ class @beta Efl.Canvas.Gesture_Recognizer_Zoom extends Efl.Canvas.Gesture_Recogn
|
|||
]]
|
||||
c_prefix: efl_gesture_recognizer_zoom;
|
||||
implements {
|
||||
Efl.Canvas.Gesture_Recognizer.add;
|
||||
Efl.Canvas.Gesture_Recognizer.type { get; }
|
||||
Efl.Canvas.Gesture_Recognizer.recognize;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,12 +14,6 @@ _custom_recognizer_efl_object_finalize(Eo *obj, Custom_Recognizer_Data *pd EINA_
|
|||
return efl_finalize(efl_super(obj, MY_CLASS));
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture *
|
||||
_custom_recognizer_efl_canvas_gesture_recognizer_add(Eo *obj, Custom_Recognizer_Data *pd EINA_UNUSED, Efl_Object *target EINA_UNUSED)
|
||||
{
|
||||
return efl_add(EFL_CANVAS_GESTURE_CUSTOM_CLASS, obj);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Result
|
||||
_custom_recognizer_efl_canvas_gesture_recognizer_recognize(Eo *obj EINA_UNUSED, Custom_Recognizer_Data *pd EINA_UNUSED,
|
||||
Efl_Canvas_Gesture *gesture EINA_UNUSED, Efl_Object *watched EINA_UNUSED,
|
||||
|
|
|
@ -5,7 +5,6 @@ class @beta Custom_Recognizer extends Efl.Canvas.Gesture_Recognizer_Custom
|
|||
c_prefix: custom_recognizer;
|
||||
implements {
|
||||
Efl.Object.finalize;
|
||||
Efl.Canvas.Gesture_Recognizer.add;
|
||||
Efl.Canvas.Gesture_Recognizer.recognize;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,12 +13,6 @@ _custom_recognizer2_efl_object_finalize(Eo *obj, Custom_Recognizer2_Data *pd EIN
|
|||
return efl_finalize(efl_super(obj, MY_CLASS));
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture *
|
||||
_custom_recognizer2_efl_canvas_gesture_recognizer_add(Eo *obj, Custom_Recognizer2_Data *pd EINA_UNUSED, Efl_Object *target EINA_UNUSED)
|
||||
{
|
||||
return efl_add(EFL_CANVAS_GESTURE_CUSTOM_CLASS, obj);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Result
|
||||
_custom_recognizer2_efl_canvas_gesture_recognizer_recognize(Eo *obj EINA_UNUSED, Custom_Recognizer2_Data *pd EINA_UNUSED,
|
||||
Efl_Canvas_Gesture *gesture EINA_UNUSED, Efl_Object *watched EINA_UNUSED,
|
||||
|
|
|
@ -5,7 +5,6 @@ class @beta Custom_Recognizer2 extends Efl.Canvas.Gesture_Recognizer_Custom
|
|||
c_prefix: custom_recognizer2;
|
||||
implements {
|
||||
Efl.Object.finalize;
|
||||
Efl.Canvas.Gesture_Recognizer.add;
|
||||
Efl.Canvas.Gesture_Recognizer.recognize;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue