summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/evas/canvas/evas_callbacks.c2
-rw-r--r--src/lib/evas/canvas/evas_events_legacy.c12
-rw-r--r--src/lib/evas/include/evas_private.h2
3 files changed, 13 insertions, 3 deletions
diff --git a/src/lib/evas/canvas/evas_callbacks.c b/src/lib/evas/canvas/evas_callbacks.c
index ae9c9bbcb7..7959079184 100644
--- a/src/lib/evas/canvas/evas_callbacks.c
+++ b/src/lib/evas/canvas/evas_callbacks.c
@@ -131,7 +131,7 @@ _eo_evas_object_cb(void *data, const Eo_Event *event)
switch (info->efl_event_info)
{
case EFL_EVENT_TYPE_POINTER:
- event_info = efl_event_pointer_legacy_info_fill(efl_event_info, &event_flags);
+ event_info = efl_event_pointer_legacy_info_fill(efl_event_info, info->type, &event_flags);
break;
case EFL_EVENT_TYPE_KEY:
diff --git a/src/lib/evas/canvas/evas_events_legacy.c b/src/lib/evas/canvas/evas_events_legacy.c
index 0d2cd24ca8..ff9c01b178 100644
--- a/src/lib/evas/canvas/evas_events_legacy.c
+++ b/src/lib/evas/canvas/evas_events_legacy.c
@@ -210,16 +210,18 @@ efl_event_pointer_legacy_info_set(Efl_Event_Pointer *evt, const void *event_info
}
void *
-efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Event_Flags **pflags)
+efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Callback_Type type, Evas_Event_Flags **pflags)
{
Efl_Event_Pointer_Data *ev = efl_data_scope_get(evt, EFL_EVENT_POINTER_CLASS);
if (!ev) return NULL;
#define COORD_DUP(e) do { (e)->output.x = (e)->canvas.x; (e)->output.y = (e)->canvas.y; } while (0)
+#define TYPE_CHK(typ) do { if (type != EVAS_CALLBACK_ ## typ) return NULL; } while (0)
switch (ev->action)
{
case EFL_POINTER_ACTION_IN:
+ TYPE_CHK(MOUSE_IN);
{
Evas_Event_Mouse_In *e = ev->legacy ? ev->legacy : calloc(1, sizeof(*e));
e->canvas.x = ev->cur.x;
@@ -238,6 +240,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Event_Flags **pflags
}
case EFL_POINTER_ACTION_OUT:
+ TYPE_CHK(MOUSE_OUT);
{
Evas_Event_Mouse_Out *e = ev->legacy ? ev->legacy : calloc(1, sizeof(*e));
e->canvas.x = ev->cur.x;
@@ -258,6 +261,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Event_Flags **pflags
case EFL_POINTER_ACTION_DOWN:
if (ev->finger == 0)
{
+ TYPE_CHK(MOUSE_DOWN);
Evas_Event_Mouse_Down *e = ev->legacy ? ev->legacy : calloc(1, sizeof(*e));
e->button = ev->button;
e->canvas.x = ev->cur.x;
@@ -277,6 +281,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Event_Flags **pflags
}
else
{
+ TYPE_CHK(MULTI_DOWN);
Evas_Event_Multi_Down *e = ev->legacy ? ev->legacy : calloc(1, sizeof(*e));
e->device = ev->finger;
e->radius = ev->radius;
@@ -304,6 +309,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Event_Flags **pflags
case EFL_POINTER_ACTION_UP:
if (ev->finger == 0)
{
+ TYPE_CHK(MOUSE_UP);
Evas_Event_Mouse_Up *e = ev->legacy ? ev->legacy : calloc(1, sizeof(*e));
e->button = ev->button;
e->canvas.x = ev->cur.x;
@@ -323,6 +329,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Event_Flags **pflags
}
else
{
+ TYPE_CHK(MULTI_UP);
Evas_Event_Multi_Up *e = ev->legacy ? ev->legacy : calloc(1, sizeof(*e));
e->device = ev->finger;
e->radius = ev->radius;
@@ -350,6 +357,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Event_Flags **pflags
case EFL_POINTER_ACTION_MOVE:
if (ev->finger == 0)
{
+ TYPE_CHK(MOUSE_MOVE);
Evas_Event_Mouse_Move *e = ev->legacy ? ev->legacy : calloc(1, sizeof(*e));
e->buttons = ev->pressed_buttons;
e->cur.canvas.x = ev->cur.x;
@@ -371,6 +379,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Event_Flags **pflags
}
else
{
+ TYPE_CHK(MULTI_MOVE);
Evas_Event_Multi_Move *e = ev->legacy ? ev->legacy : calloc(1, sizeof(*e));
e->device = ev->finger;
e->radius = ev->radius;
@@ -396,6 +405,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Event_Flags **pflags
case EFL_POINTER_ACTION_WHEEL:
{
+ TYPE_CHK(MOUSE_WHEEL);
Evas_Event_Mouse_Wheel *e = ev->legacy ? ev->legacy : calloc(1, sizeof(*e));
e->direction = (ev->wheel.dir == EFL_ORIENT_HORIZONTAL) ? 1 : 0;
e->z = ev->wheel.z;
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index d7b4891b57..d63e7d4820 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1957,7 +1957,7 @@ Evas_Device *_evas_device_top_get(const Evas *e);
Eina_Bool efl_event_pointer_legacy_info_set(Efl_Event_Pointer *evt, const void *event_info, Evas_Callback_Type type);
Eina_Bool efl_event_key_legacy_info_set(Efl_Event_Key *evt, const void *event_info, Evas_Callback_Type type);
Eina_Bool efl_event_hold_legacy_info_set(Efl_Event_Hold *evt, const void *event_info, Evas_Callback_Type type);
-void *efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Event_Flags **pflags);
+void *efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Callback_Type type, Evas_Event_Flags **pflags);
void *efl_event_key_legacy_info_fill(Efl_Event_Key *evt, Evas_Event_Flags **pflags);
void *efl_event_hold_legacy_info_fill(Efl_Event_Hold *evt, Evas_Event_Flags **pflags);