forked from enlightenment/efl
tests/gesture: add second custom recognizer test
ensure that this functionality works Differential Revision: https://phab.enlightenment.org/D11239
This commit is contained in:
parent
cd5a15bf5c
commit
d8ed195916
|
@ -0,0 +1,47 @@
|
|||
#include <Efl_Ui.h>
|
||||
#include "custom_recognizer2.eo.h"
|
||||
#define MY_CLASS CUSTOM_RECOGNIZER2_CLASS
|
||||
|
||||
typedef struct Custom_Recognizer2_Data
|
||||
{
|
||||
} Custom_Recognizer2_Data;
|
||||
|
||||
EOLIAN static Eo *
|
||||
_custom_recognizer2_efl_object_finalize(Eo *obj, Custom_Recognizer2_Data *pd EINA_UNUSED)
|
||||
{
|
||||
efl_gesture_recognizer_custom_gesture_name_set(obj, "custom_gesture2");
|
||||
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,
|
||||
Efl_Canvas_Gesture_Touch *event)
|
||||
{
|
||||
Eina_Position2D start = efl_gesture_touch_start_point_get(event);
|
||||
Eina_Position2D cur = efl_gesture_touch_cur_point_get(event);
|
||||
switch (efl_gesture_touch_state_get(event))
|
||||
{
|
||||
case EFL_GESTURE_TOUCH_STATE_BEGIN:
|
||||
return EFL_GESTURE_RECOGNIZER_RESULT_TRIGGER;
|
||||
case EFL_GESTURE_TOUCH_STATE_UPDATE:
|
||||
if (EINA_POSITION2D_EQ(start, cur))
|
||||
return EFL_GESTURE_RECOGNIZER_RESULT_TRIGGER;
|
||||
if ((cur.x - start.x == 1) && (cur.y == start.y))
|
||||
return EFL_GESTURE_RECOGNIZER_RESULT_FINISH;
|
||||
case EFL_GESTURE_TOUCH_STATE_END:
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return EFL_GESTURE_RECOGNIZER_RESULT_CANCEL;
|
||||
}
|
||||
|
||||
#include "custom_recognizer2.eo.c"
|
|
@ -0,0 +1,11 @@
|
|||
class @beta Custom_Recognizer2 extends Efl.Canvas.Gesture_Recognizer_Custom
|
||||
{
|
||||
[[Custom gesture recognizer test class.
|
||||
]]
|
||||
c_prefix: custom_recognizer2;
|
||||
implements {
|
||||
Efl.Object.finalize;
|
||||
Efl.Canvas.Gesture_Recognizer.add;
|
||||
Efl.Canvas.Gesture_Recognizer.recognize;
|
||||
}
|
||||
}
|
|
@ -9,6 +9,7 @@
|
|||
#include <evas_canvas_eo.h>
|
||||
|
||||
#include "custom_recognizer.eo.h"
|
||||
#include "custom_recognizer2.eo.h"
|
||||
|
||||
/*
|
||||
typedef enum
|
||||
|
@ -31,6 +32,7 @@ enum
|
|||
FLICK,
|
||||
ZOOM,
|
||||
CUSTOM,
|
||||
CUSTOM2,
|
||||
LAST
|
||||
};
|
||||
|
||||
|
@ -514,8 +516,19 @@ custom_cb(void *data EINA_UNUSED , const Efl_Event *ev)
|
|||
{
|
||||
Efl_Canvas_Gesture *g = ev->info;
|
||||
|
||||
ck_assert_str_eq(efl_gesture_custom_gesture_name_get(g), "custom_gesture");
|
||||
int *count = data;
|
||||
if (!eina_streq(efl_gesture_custom_gesture_name_get(g), "custom_gesture")) return;
|
||||
/* increment counter for event state which has been processed */
|
||||
count[efl_gesture_state_get(g) - 1]++;
|
||||
}
|
||||
|
||||
static void
|
||||
custom_cb2(void *data EINA_UNUSED , const Efl_Event *ev)
|
||||
{
|
||||
Efl_Canvas_Gesture *g = ev->info;
|
||||
|
||||
int *count = data;
|
||||
if (!eina_streq(efl_gesture_custom_gesture_name_get(g), "custom_gesture2")) return;
|
||||
/* increment counter for event state which has been processed */
|
||||
count[efl_gesture_state_get(g) - 1]++;
|
||||
}
|
||||
|
@ -525,13 +538,48 @@ EFL_START_TEST(test_efl_ui_gesture_custom)
|
|||
Eo *rect = setup();
|
||||
Eo *manager = efl_provider_find(rect, EFL_CANVAS_GESTURE_MANAGER_CLASS);
|
||||
Eo *recognizer = efl_add(CUSTOM_RECOGNIZER_CLASS, manager);
|
||||
efl_gesture_manager_recognizer_register(manager, recognizer);
|
||||
Eo *recognizer2 = efl_add(CUSTOM_RECOGNIZER2_CLASS, manager);
|
||||
|
||||
efl_gesture_manager_recognizer_register(manager, recognizer);
|
||||
efl_gesture_manager_recognizer_register(manager, recognizer2);
|
||||
efl_event_callback_add(rect, EFL_EVENT_GESTURE_CUSTOM, custom_cb, &count[CUSTOM]);
|
||||
efl_event_callback_add(rect, EFL_EVENT_GESTURE_CUSTOM, custom_cb2, &count[CUSTOM2]);
|
||||
|
||||
/* verify that we're processing */
|
||||
click_object(rect);
|
||||
CHECK_ALL(CUSTOM, 1, 0, 1, 0);
|
||||
efl_event_callback_del(rect, EFL_EVENT_GESTURE_CUSTOM, custom_cb, &count[CUSTOM]);
|
||||
CHECK_ALL(CUSTOM2, 1, 0, 0, 1);
|
||||
|
||||
RESET;
|
||||
|
||||
/* verify that we aren't still processing */
|
||||
efl_gesture_manager_recognizer_unregister(manager, recognizer);
|
||||
efl_gesture_manager_recognizer_unregister(manager, recognizer2);
|
||||
click_object(rect);
|
||||
CHECK_ZERO(CUSTOM);
|
||||
CHECK_ZERO(CUSTOM2);
|
||||
|
||||
RESET;
|
||||
|
||||
/* verify re-register + early finish from custom2 */
|
||||
efl_gesture_manager_recognizer_register(manager, recognizer);
|
||||
efl_gesture_manager_recognizer_register(manager, recognizer2);
|
||||
drag_object(rect, 500, 500, 1, 0, EINA_FALSE);
|
||||
CHECK_ALL(CUSTOM, 1, 1, 1, 0);
|
||||
CHECK_ALL(CUSTOM2, 1, 0, 1, 0);
|
||||
|
||||
efl_event_callback_del(rect, EFL_EVENT_GESTURE_CUSTOM, custom_cb, &count[CUSTOM]);
|
||||
efl_event_callback_del(rect, EFL_EVENT_GESTURE_CUSTOM, custom_cb2, &count[CUSTOM2]);
|
||||
|
||||
RESET;
|
||||
|
||||
/* verify we don't have anything totally weird going on */
|
||||
click_object(rect);
|
||||
CHECK_ZERO(CUSTOM);
|
||||
CHECK_ZERO(CUSTOM2);
|
||||
|
||||
efl_gesture_manager_recognizer_unregister(manager, recognizer);
|
||||
efl_gesture_manager_recognizer_unregister(manager, recognizer2);
|
||||
}
|
||||
EFL_END_TEST
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
priv_eo_files = [
|
||||
'custom_recognizer.eo',
|
||||
'custom_recognizer2.eo',
|
||||
'focus_test.eo',
|
||||
'focus_test_sub_main.eo',
|
||||
'focus_manager_test.eo'
|
||||
|
@ -164,6 +165,7 @@ efl_ui_suite_src = [
|
|||
'efl_ui_test_text.c',
|
||||
'efl_ui_test_vg_animation.c',
|
||||
'custom_recognizer.c',
|
||||
'custom_recognizer2.c',
|
||||
]
|
||||
|
||||
efl_ui_suite = executable('efl_ui_suite',
|
||||
|
|
Loading…
Reference in New Issue