forked from enlightenment/efl
and have the event surfivie between object calls - that was an oops!
SVN revision: 33563
This commit is contained in:
parent
a20bf8dc09
commit
f8a8489e92
|
@ -225,6 +225,7 @@ EAPI void
|
||||||
evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data)
|
evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data)
|
||||||
{
|
{
|
||||||
Evas_List *l, *copy;
|
Evas_List *l, *copy;
|
||||||
|
Evas_Event_Mouse_Down ev;
|
||||||
|
|
||||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||||
return;
|
return;
|
||||||
|
@ -237,12 +238,23 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
|
||||||
if (e->events_frozen > 0) return;
|
if (e->events_frozen > 0) return;
|
||||||
e->last_timestamp = timestamp;
|
e->last_timestamp = timestamp;
|
||||||
|
|
||||||
|
ev.button = b;
|
||||||
|
ev.output.x = e->pointer.x;
|
||||||
|
ev.output.y = e->pointer.y;
|
||||||
|
ev.canvas.x = e->pointer.x;
|
||||||
|
ev.canvas.y = e->pointer.y;
|
||||||
|
ev.data = (void *)data;
|
||||||
|
ev.modifiers = &(e->modifiers);
|
||||||
|
ev.locks = &(e->locks);
|
||||||
|
ev.flags = flags;
|
||||||
|
ev.timestamp = timestamp;
|
||||||
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
|
|
||||||
_evas_walk(e);
|
_evas_walk(e);
|
||||||
copy = evas_event_list_copy(e->pointer.object.in);
|
copy = evas_event_list_copy(e->pointer.object.in);
|
||||||
for (l = copy; l; l = l->next)
|
for (l = copy; l; l = l->next)
|
||||||
{
|
{
|
||||||
Evas_Object *obj;
|
Evas_Object *obj;
|
||||||
Evas_Event_Mouse_Down ev;
|
|
||||||
|
|
||||||
obj = l->data;
|
obj = l->data;
|
||||||
if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB)
|
if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB)
|
||||||
|
@ -251,19 +263,6 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
|
||||||
e->pointer.mouse_grabbed++;
|
e->pointer.mouse_grabbed++;
|
||||||
}
|
}
|
||||||
|
|
||||||
ev.button = b;
|
|
||||||
ev.output.x = e->pointer.x;
|
|
||||||
ev.output.y = e->pointer.y;
|
|
||||||
ev.canvas.x = e->pointer.x;
|
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
//// ev.canvas.x = e->pointer.canvas_x;
|
|
||||||
//// ev.canvas.y = e->pointer.canvas_y;
|
|
||||||
ev.data = (void *)data;
|
|
||||||
ev.modifiers = &(e->modifiers);
|
|
||||||
ev.locks = &(e->locks);
|
|
||||||
ev.flags = flags;
|
|
||||||
ev.timestamp = timestamp;
|
|
||||||
ev.event_flags = 0;
|
|
||||||
if (e->events_frozen <= 0)
|
if (e->events_frozen <= 0)
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev);
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev);
|
||||||
if (e->delete_me) break;
|
if (e->delete_me) break;
|
||||||
|
@ -295,79 +294,97 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
|
||||||
if (e->events_frozen > 0) return;
|
if (e->events_frozen > 0) return;
|
||||||
e->last_timestamp = timestamp;
|
e->last_timestamp = timestamp;
|
||||||
|
|
||||||
_evas_walk(e);
|
|
||||||
copy = evas_event_list_copy(e->pointer.object.in);
|
|
||||||
for (l = copy; l; l = l->next)
|
|
||||||
{
|
{
|
||||||
Evas_Object *obj;
|
|
||||||
Evas_Event_Mouse_Up ev;
|
Evas_Event_Mouse_Up ev;
|
||||||
|
|
||||||
obj = l->data;
|
|
||||||
if ((obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) &&
|
|
||||||
(obj->mouse_in) && (obj->mouse_grabbed > 0))
|
|
||||||
{
|
|
||||||
obj->mouse_grabbed--;
|
|
||||||
e->pointer.mouse_grabbed--;
|
|
||||||
}
|
|
||||||
ev.button = b;
|
ev.button = b;
|
||||||
ev.output.x = e->pointer.x;
|
ev.output.x = e->pointer.x;
|
||||||
ev.output.y = e->pointer.y;
|
ev.output.y = e->pointer.y;
|
||||||
ev.canvas.x = e->pointer.x;
|
ev.canvas.x = e->pointer.x;
|
||||||
ev.canvas.y = e->pointer.y;
|
ev.canvas.y = e->pointer.y;
|
||||||
//// ev.canvas.x = e->pointer.canvas_x;
|
|
||||||
//// ev.canvas.y = e->pointer.canvas_y;
|
|
||||||
ev.data = (void *)data;
|
ev.data = (void *)data;
|
||||||
ev.modifiers = &(e->modifiers);
|
ev.modifiers = &(e->modifiers);
|
||||||
ev.locks = &(e->locks);
|
ev.locks = &(e->locks);
|
||||||
ev.flags = flags;
|
ev.flags = flags;
|
||||||
ev.timestamp = timestamp;
|
ev.timestamp = timestamp;
|
||||||
ev.event_flags = 0;
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
if (e->events_frozen <= 0)
|
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev);
|
_evas_walk(e);
|
||||||
if (e->delete_me) break;
|
copy = evas_event_list_copy(e->pointer.object.in);
|
||||||
|
for (l = copy; l; l = l->next)
|
||||||
|
{
|
||||||
|
Evas_Object *obj;
|
||||||
|
|
||||||
|
obj = l->data;
|
||||||
|
if ((obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) &&
|
||||||
|
(obj->mouse_in) && (obj->mouse_grabbed > 0))
|
||||||
|
{
|
||||||
|
obj->mouse_grabbed--;
|
||||||
|
e->pointer.mouse_grabbed--;
|
||||||
|
}
|
||||||
|
if (e->events_frozen <= 0)
|
||||||
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev);
|
||||||
|
if (e->delete_me) break;
|
||||||
|
}
|
||||||
|
if (copy) copy = evas_list_free(copy);
|
||||||
|
e->last_mouse_up_counter++;
|
||||||
}
|
}
|
||||||
if (copy) copy = evas_list_free(copy);
|
|
||||||
e->last_mouse_up_counter++;
|
|
||||||
if (!e->pointer.button)
|
if (!e->pointer.button)
|
||||||
{
|
{
|
||||||
Evas_List *ins;
|
Evas_List *ins;
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
|
||||||
/* get new list of ins */
|
|
||||||
ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y);
|
|
||||||
/* go thru old list of in objects */
|
|
||||||
copy = evas_event_list_copy(e->pointer.object.in);
|
|
||||||
for (l = copy; l; l = l->next)
|
|
||||||
{
|
{
|
||||||
Evas_Object *obj;
|
Evas_Event_Mouse_Out ev;
|
||||||
|
|
||||||
obj = l->data;
|
ev.buttons = e->pointer.button;
|
||||||
if ((!evas_list_find(ins, obj)) ||
|
ev.output.x = e->pointer.x;
|
||||||
(!e->pointer.inside))
|
ev.output.y = e->pointer.y;
|
||||||
|
ev.canvas.x = e->pointer.x;
|
||||||
|
ev.canvas.y = e->pointer.y;
|
||||||
|
ev.data = (void *)data;
|
||||||
|
ev.modifiers = &(e->modifiers);
|
||||||
|
ev.locks = &(e->locks);
|
||||||
|
ev.timestamp = timestamp;
|
||||||
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
|
|
||||||
|
/* get new list of ins */
|
||||||
|
ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y);
|
||||||
|
/* go thru old list of in objects */
|
||||||
|
copy = evas_event_list_copy(e->pointer.object.in);
|
||||||
|
for (l = copy; l; l = l->next)
|
||||||
{
|
{
|
||||||
Evas_Event_Mouse_Out ev;
|
Evas_Object *obj;
|
||||||
|
|
||||||
obj->mouse_in = 0;
|
obj = l->data;
|
||||||
ev.buttons = e->pointer.button;
|
if ((!evas_list_find(ins, obj)) ||
|
||||||
ev.output.x = e->pointer.x;
|
(!e->pointer.inside))
|
||||||
ev.output.y = e->pointer.y;
|
{
|
||||||
ev.canvas.x = e->pointer.x;
|
|
||||||
ev.canvas.y = e->pointer.y;
|
obj->mouse_in = 0;
|
||||||
//// ev.canvas.x = e->pointer.canvas_x;
|
if (e->events_frozen <= 0)
|
||||||
//// ev.canvas.y = e->pointer.canvas_y;
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
||||||
ev.data = (void *)data;
|
}
|
||||||
ev.modifiers = &(e->modifiers);
|
if (e->delete_me) break;
|
||||||
ev.locks = &(e->locks);
|
|
||||||
ev.timestamp = timestamp;
|
|
||||||
ev.event_flags = 0;
|
|
||||||
if (e->events_frozen <= 0)
|
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
|
||||||
}
|
}
|
||||||
if (copy) copy = evas_list_free(copy);
|
if (copy) copy = evas_list_free(copy);
|
||||||
if (e->pointer.inside)
|
if (e->pointer.inside)
|
||||||
{
|
{
|
||||||
|
Evas_Event_Mouse_In ev;
|
||||||
|
|
||||||
|
ev.buttons = e->pointer.button;
|
||||||
|
ev.output.x = e->pointer.x;
|
||||||
|
ev.output.y = e->pointer.y;
|
||||||
|
ev.canvas.x = e->pointer.x;
|
||||||
|
ev.canvas.y = e->pointer.y;
|
||||||
|
ev.data = (void *)data;
|
||||||
|
ev.modifiers = &(e->modifiers);
|
||||||
|
ev.locks = &(e->locks);
|
||||||
|
ev.timestamp = timestamp;
|
||||||
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
|
|
||||||
for (l = ins; l; l = l->next)
|
for (l = ins; l; l = l->next)
|
||||||
{
|
{
|
||||||
Evas_Object *obj;
|
Evas_Object *obj;
|
||||||
|
@ -376,21 +393,8 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
|
||||||
|
|
||||||
if (!evas_list_find(e->pointer.object.in, obj))
|
if (!evas_list_find(e->pointer.object.in, obj))
|
||||||
{
|
{
|
||||||
Evas_Event_Mouse_In ev;
|
|
||||||
|
|
||||||
obj->mouse_in = 1;
|
obj->mouse_in = 1;
|
||||||
ev.buttons = e->pointer.button;
|
|
||||||
ev.output.x = e->pointer.x;
|
|
||||||
ev.output.y = e->pointer.y;
|
|
||||||
ev.canvas.x = e->pointer.x;
|
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
//// ev.canvas.x = e->pointer.canvas_x;
|
|
||||||
//// ev.canvas.y = e->pointer.canvas_y;
|
|
||||||
ev.data = (void *)data;
|
|
||||||
ev.modifiers = &(e->modifiers);
|
|
||||||
ev.locks = &(e->locks);
|
|
||||||
ev.timestamp = timestamp;
|
|
||||||
ev.event_flags = 0;
|
|
||||||
if (e->events_frozen <= 0)
|
if (e->events_frozen <= 0)
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
|
||||||
}
|
}
|
||||||
|
@ -430,6 +434,7 @@ EAPI void
|
||||||
evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestamp, const void *data)
|
evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestamp, const void *data)
|
||||||
{
|
{
|
||||||
Evas_List *l, *copy;
|
Evas_List *l, *copy;
|
||||||
|
Evas_Event_Mouse_Wheel ev;
|
||||||
|
|
||||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||||
return;
|
return;
|
||||||
|
@ -438,27 +443,25 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam
|
||||||
if (e->events_frozen > 0) return;
|
if (e->events_frozen > 0) return;
|
||||||
e->last_timestamp = timestamp;
|
e->last_timestamp = timestamp;
|
||||||
|
|
||||||
|
ev.direction = direction;
|
||||||
|
ev.z = z;
|
||||||
|
ev.output.x = e->pointer.x;
|
||||||
|
ev.output.y = e->pointer.y;
|
||||||
|
ev.canvas.x = e->pointer.x;
|
||||||
|
ev.canvas.y = e->pointer.y;
|
||||||
|
ev.data = (void *) data;
|
||||||
|
ev.modifiers = &(e->modifiers);
|
||||||
|
ev.locks = &(e->locks);
|
||||||
|
ev.timestamp = timestamp;
|
||||||
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
|
|
||||||
_evas_walk(e);
|
_evas_walk(e);
|
||||||
copy = evas_event_list_copy(e->pointer.object.in);
|
copy = evas_event_list_copy(e->pointer.object.in);
|
||||||
|
|
||||||
for (l = copy; l; l = l->next)
|
for (l = copy; l; l = l->next)
|
||||||
{
|
{
|
||||||
Evas_Event_Mouse_Wheel ev;
|
|
||||||
Evas_Object *obj = l->data;
|
Evas_Object *obj = l->data;
|
||||||
|
|
||||||
ev.direction = direction;
|
|
||||||
ev.z = z;
|
|
||||||
ev.output.x = e->pointer.x;
|
|
||||||
ev.output.y = e->pointer.y;
|
|
||||||
ev.canvas.x = e->pointer.x;
|
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
//// ev.canvas.x = e->pointer.canvas_x;
|
|
||||||
//// ev.canvas.y = e->pointer.canvas_y;
|
|
||||||
ev.data = (void *) data;
|
|
||||||
ev.modifiers = &(e->modifiers);
|
|
||||||
ev.locks = &(e->locks);
|
|
||||||
ev.timestamp = timestamp;
|
|
||||||
ev.event_flags = 0;
|
|
||||||
if (e->events_frozen <= 0)
|
if (e->events_frozen <= 0)
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev);
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev);
|
||||||
if (e->delete_me) break;
|
if (e->delete_me) break;
|
||||||
|
@ -507,75 +510,74 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
||||||
Evas_List *outs = NULL;
|
Evas_List *outs = NULL;
|
||||||
Evas_List *l, *copy;
|
Evas_List *l, *copy;
|
||||||
|
|
||||||
copy = evas_event_list_copy(e->pointer.object.in);
|
|
||||||
for (l = copy; l; l = l->next)
|
|
||||||
{
|
{
|
||||||
Evas_Object *obj;
|
Evas_Event_Mouse_Move ev;
|
||||||
|
|
||||||
obj = l->data;
|
ev.buttons = e->pointer.button;
|
||||||
if ((obj->cur.visible) &&
|
ev.cur.output.x = e->pointer.x;
|
||||||
(evas_object_clippers_is_visible(obj)) &&
|
ev.cur.output.y = e->pointer.y;
|
||||||
(!evas_event_passes_through(obj)) &&
|
ev.cur.canvas.x = e->pointer.x;
|
||||||
(!obj->clip.clipees))
|
ev.cur.canvas.y = e->pointer.y;
|
||||||
|
ev.prev.output.x = px;
|
||||||
|
ev.prev.output.y = py;
|
||||||
|
ev.prev.canvas.x = px;
|
||||||
|
ev.prev.canvas.y = py;
|
||||||
|
ev.data = (void *)data;
|
||||||
|
ev.modifiers = &(e->modifiers);
|
||||||
|
ev.locks = &(e->locks);
|
||||||
|
ev.timestamp = timestamp;
|
||||||
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
|
copy = evas_event_list_copy(e->pointer.object.in);
|
||||||
|
for (l = copy; l; l = l->next)
|
||||||
{
|
{
|
||||||
if ((px != x) || (py != y))
|
Evas_Object *obj;
|
||||||
|
|
||||||
|
obj = l->data;
|
||||||
|
if ((obj->cur.visible) &&
|
||||||
|
(evas_object_clippers_is_visible(obj)) &&
|
||||||
|
(!evas_event_passes_through(obj)) &&
|
||||||
|
(!obj->clip.clipees))
|
||||||
{
|
{
|
||||||
Evas_Event_Mouse_Move ev;
|
if ((px != x) || (py != y))
|
||||||
|
{
|
||||||
ev.buttons = e->pointer.button;
|
if (e->events_frozen <= 0)
|
||||||
ev.cur.output.x = e->pointer.x;
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev);
|
||||||
ev.cur.output.y = e->pointer.y;
|
}
|
||||||
ev.cur.canvas.x = e->pointer.x;
|
|
||||||
ev.cur.canvas.y = e->pointer.y;
|
|
||||||
//// ev.cur.canvas.x = e->pointer.canvas_x;
|
|
||||||
//// ev.cur.canvas.y = e->pointer.canvas_y;
|
|
||||||
ev.prev.output.x = px;
|
|
||||||
ev.prev.output.y = py;
|
|
||||||
ev.prev.canvas.x = px;
|
|
||||||
ev.prev.canvas.y = py;
|
|
||||||
//// ev.prev.canvas.x = pcx;
|
|
||||||
//// ev.prev.canvas.y = pcy;
|
|
||||||
ev.data = (void *)data;
|
|
||||||
ev.modifiers = &(e->modifiers);
|
|
||||||
ev.locks = &(e->locks);
|
|
||||||
ev.timestamp = timestamp;
|
|
||||||
ev.event_flags = 0;
|
|
||||||
if (e->events_frozen <= 0)
|
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
outs = evas_list_append(outs, obj);
|
||||||
|
if (e->delete_me) break;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
outs = evas_list_append(outs, obj);
|
|
||||||
if (e->delete_me) break;
|
|
||||||
}
|
}
|
||||||
if (copy) copy = evas_list_free(copy);
|
|
||||||
while (outs)
|
|
||||||
{
|
{
|
||||||
Evas_Object *obj;
|
Evas_Event_Mouse_Out ev;
|
||||||
|
|
||||||
obj = outs->data;
|
ev.buttons = e->pointer.button;
|
||||||
outs = evas_list_remove(outs, obj);
|
ev.output.x = e->pointer.x;
|
||||||
if ((!obj->mouse_grabbed) && (!e->delete_me))
|
ev.output.y = e->pointer.y;
|
||||||
|
ev.canvas.x = e->pointer.x;
|
||||||
|
ev.canvas.y = e->pointer.y;
|
||||||
|
ev.data = (void *)data;
|
||||||
|
ev.modifiers = &(e->modifiers);
|
||||||
|
ev.locks = &(e->locks);
|
||||||
|
ev.timestamp = timestamp;
|
||||||
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
|
|
||||||
|
if (copy) copy = evas_list_free(copy);
|
||||||
|
while (outs)
|
||||||
{
|
{
|
||||||
e->pointer.object.in = evas_list_remove(e->pointer.object.in, obj);
|
Evas_Object *obj;
|
||||||
|
|
||||||
|
obj = outs->data;
|
||||||
|
outs = evas_list_remove(outs, obj);
|
||||||
|
if ((!obj->mouse_grabbed) && (!e->delete_me))
|
||||||
{
|
{
|
||||||
Evas_Event_Mouse_Out ev;
|
e->pointer.object.in = evas_list_remove(e->pointer.object.in, obj);
|
||||||
|
{
|
||||||
obj->mouse_in = 0;
|
obj->mouse_in = 0;
|
||||||
ev.buttons = e->pointer.button;
|
if (e->events_frozen <= 0)
|
||||||
ev.output.x = e->pointer.x;
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
||||||
ev.output.y = e->pointer.y;
|
}
|
||||||
ev.canvas.x = e->pointer.x;
|
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
//// ev.canvas.x = e->pointer.canvas_x;
|
|
||||||
//// ev.canvas.y = e->pointer.canvas_y;
|
|
||||||
ev.data = (void *)data;
|
|
||||||
ev.modifiers = &(e->modifiers);
|
|
||||||
ev.locks = &(e->locks);
|
|
||||||
ev.timestamp = timestamp;
|
|
||||||
ev.event_flags = 0;
|
|
||||||
if (e->events_frozen <= 0)
|
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -584,7 +586,47 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
||||||
{
|
{
|
||||||
Evas_List *ins;
|
Evas_List *ins;
|
||||||
Evas_List *l, *copy;
|
Evas_List *l, *copy;
|
||||||
|
Evas_Event_Mouse_Move ev;
|
||||||
|
Evas_Event_Mouse_Out ev2;
|
||||||
|
Evas_Event_Mouse_In ev3;
|
||||||
|
|
||||||
|
ev.buttons = e->pointer.button;
|
||||||
|
ev.cur.output.x = e->pointer.x;
|
||||||
|
ev.cur.output.y = e->pointer.y;
|
||||||
|
ev.cur.canvas.x = e->pointer.x;
|
||||||
|
ev.cur.canvas.y = e->pointer.y;
|
||||||
|
ev.prev.output.x = px;
|
||||||
|
ev.prev.output.y = py;
|
||||||
|
ev.prev.canvas.x = px;
|
||||||
|
ev.prev.canvas.y = py;
|
||||||
|
ev.data = (void *)data;
|
||||||
|
ev.modifiers = &(e->modifiers);
|
||||||
|
ev.locks = &(e->locks);
|
||||||
|
ev.timestamp = timestamp;
|
||||||
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
|
|
||||||
|
ev2.buttons = e->pointer.button;
|
||||||
|
ev2.output.x = e->pointer.x;
|
||||||
|
ev2.output.y = e->pointer.y;
|
||||||
|
ev2.canvas.x = e->pointer.x;
|
||||||
|
ev2.canvas.y = e->pointer.y;
|
||||||
|
ev2.data = (void *)data;
|
||||||
|
ev2.modifiers = &(e->modifiers);
|
||||||
|
ev2.locks = &(e->locks);
|
||||||
|
ev2.timestamp = timestamp;
|
||||||
|
ev2.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
|
|
||||||
|
ev3.buttons = e->pointer.button;
|
||||||
|
ev3.output.x = e->pointer.x;
|
||||||
|
ev3.output.y = e->pointer.y;
|
||||||
|
ev3.canvas.x = e->pointer.x;
|
||||||
|
ev3.canvas.y = e->pointer.y;
|
||||||
|
ev3.data = (void *)data;
|
||||||
|
ev3.modifiers = &(e->modifiers);
|
||||||
|
ev3.locks = &(e->locks);
|
||||||
|
ev3.timestamp = timestamp;
|
||||||
|
ev3.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
|
|
||||||
/* get all new in objects */
|
/* get all new in objects */
|
||||||
ins = evas_event_objects_event_list(e, NULL, x, y);
|
ins = evas_event_objects_event_list(e, NULL, x, y);
|
||||||
/* go thru old list of in objects */
|
/* go thru old list of in objects */
|
||||||
|
@ -609,26 +651,6 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
||||||
{
|
{
|
||||||
if ((px != x) || (py != y))
|
if ((px != x) || (py != y))
|
||||||
{
|
{
|
||||||
Evas_Event_Mouse_Move ev;
|
|
||||||
|
|
||||||
ev.buttons = e->pointer.button;
|
|
||||||
ev.cur.output.x = e->pointer.x;
|
|
||||||
ev.cur.output.y = e->pointer.y;
|
|
||||||
ev.cur.canvas.x = e->pointer.x;
|
|
||||||
ev.cur.canvas.y = e->pointer.y;
|
|
||||||
//// ev.cur.canvas.x = e->pointer.canvas_x;
|
|
||||||
//// ev.cur.canvas.y = e->pointer.canvas_y;
|
|
||||||
ev.prev.output.x = px;
|
|
||||||
ev.prev.output.y = py;
|
|
||||||
ev.prev.canvas.x = px;
|
|
||||||
ev.prev.canvas.y = py;
|
|
||||||
//// ev.prev.canvas.x = pcx;
|
|
||||||
//// ev.prev.canvas.y = pcy;
|
|
||||||
ev.data = (void *)data;
|
|
||||||
ev.modifiers = &(e->modifiers);
|
|
||||||
ev.locks = &(e->locks);
|
|
||||||
ev.timestamp = timestamp;
|
|
||||||
ev.event_flags = 0;
|
|
||||||
if (e->events_frozen <= 0)
|
if (e->events_frozen <= 0)
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev);
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev);
|
||||||
}
|
}
|
||||||
|
@ -636,23 +658,9 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
||||||
/* otherwise it has left the object */
|
/* otherwise it has left the object */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Evas_Event_Mouse_Out ev;
|
|
||||||
|
|
||||||
obj->mouse_in = 0;
|
obj->mouse_in = 0;
|
||||||
ev.buttons = e->pointer.button;
|
|
||||||
ev.output.x = e->pointer.x;
|
|
||||||
ev.output.y = e->pointer.y;
|
|
||||||
ev.canvas.x = e->pointer.x;
|
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
//// ev.canvas.x = e->pointer.canvas_x;
|
|
||||||
//// ev.canvas.y = e->pointer.canvas_y;
|
|
||||||
ev.data = (void *)data;
|
|
||||||
ev.modifiers = &(e->modifiers);
|
|
||||||
ev.locks = &(e->locks);
|
|
||||||
ev.timestamp = timestamp;
|
|
||||||
ev.event_flags = 0;
|
|
||||||
if (e->events_frozen <= 0)
|
if (e->events_frozen <= 0)
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2);
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
if (e->delete_me) break;
|
||||||
}
|
}
|
||||||
|
@ -666,23 +674,10 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
||||||
/* if its not in the old list of ins send an enter event */
|
/* if its not in the old list of ins send an enter event */
|
||||||
if (!evas_list_find(e->pointer.object.in, obj))
|
if (!evas_list_find(e->pointer.object.in, obj))
|
||||||
{
|
{
|
||||||
Evas_Event_Mouse_In ev;
|
|
||||||
|
|
||||||
obj->mouse_in = 1;
|
obj->mouse_in = 1;
|
||||||
ev.buttons = e->pointer.button;
|
|
||||||
ev.output.x = e->pointer.x;
|
|
||||||
ev.output.y = e->pointer.y;
|
|
||||||
ev.canvas.x = e->pointer.x;
|
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
//// ev.canvas.x = e->pointer.canvas_x;
|
|
||||||
//// ev.canvas.y = e->pointer.canvas_y;
|
|
||||||
ev.data = (void *)data;
|
|
||||||
ev.modifiers = &(e->modifiers);
|
|
||||||
ev.locks = &(e->locks);
|
|
||||||
ev.timestamp = timestamp;
|
|
||||||
ev.event_flags = 0;
|
|
||||||
if (e->events_frozen <= 0)
|
if (e->events_frozen <= 0)
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3);
|
||||||
}
|
}
|
||||||
if (e->delete_me) break;
|
if (e->delete_me) break;
|
||||||
}
|
}
|
||||||
|
@ -705,6 +700,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
|
||||||
{
|
{
|
||||||
Evas_List *ins;
|
Evas_List *ins;
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
Evas_Event_Mouse_In ev;
|
||||||
|
|
||||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||||
return;
|
return;
|
||||||
|
@ -716,6 +712,17 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
|
||||||
|
|
||||||
if (e->pointer.mouse_grabbed != 0) return;
|
if (e->pointer.mouse_grabbed != 0) return;
|
||||||
|
|
||||||
|
ev.buttons = e->pointer.button;
|
||||||
|
ev.output.x = e->pointer.x;
|
||||||
|
ev.output.y = e->pointer.y;
|
||||||
|
ev.canvas.x = e->pointer.x;
|
||||||
|
ev.canvas.y = e->pointer.y;
|
||||||
|
ev.data = (void *)data;
|
||||||
|
ev.modifiers = &(e->modifiers);
|
||||||
|
ev.locks = &(e->locks);
|
||||||
|
ev.timestamp = timestamp;
|
||||||
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
|
|
||||||
_evas_walk(e);
|
_evas_walk(e);
|
||||||
/* get new list of ins */
|
/* get new list of ins */
|
||||||
ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y);
|
ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y);
|
||||||
|
@ -727,21 +734,8 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
|
||||||
|
|
||||||
if (!evas_list_find(e->pointer.object.in, obj))
|
if (!evas_list_find(e->pointer.object.in, obj))
|
||||||
{
|
{
|
||||||
Evas_Event_Mouse_In ev;
|
|
||||||
|
|
||||||
obj->mouse_in = 1;
|
obj->mouse_in = 1;
|
||||||
ev.buttons = e->pointer.button;
|
|
||||||
ev.output.x = e->pointer.x;
|
|
||||||
ev.output.y = e->pointer.y;
|
|
||||||
ev.canvas.x = e->pointer.x;
|
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
//// ev.canvas.x = e->pointer.canvas_x;
|
|
||||||
//// ev.canvas.y = e->pointer.canvas_y;
|
|
||||||
ev.data = (void *)data;
|
|
||||||
ev.modifiers = &(e->modifiers);
|
|
||||||
ev.locks = &(e->locks);
|
|
||||||
ev.timestamp = timestamp;
|
|
||||||
ev.event_flags = 0;
|
|
||||||
if (e->events_frozen <= 0)
|
if (e->events_frozen <= 0)
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
|
||||||
}
|
}
|
||||||
|
@ -764,6 +758,8 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
|
||||||
EAPI void
|
EAPI void
|
||||||
evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
|
evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
|
||||||
{
|
{
|
||||||
|
Evas_Event_Mouse_Out ev;
|
||||||
|
|
||||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||||
return;
|
return;
|
||||||
MAGIC_CHECK_END();
|
MAGIC_CHECK_END();
|
||||||
|
@ -772,6 +768,17 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
|
||||||
if (e->events_frozen > 0) return;
|
if (e->events_frozen > 0) return;
|
||||||
e->last_timestamp = timestamp;
|
e->last_timestamp = timestamp;
|
||||||
|
|
||||||
|
ev.buttons = e->pointer.button;
|
||||||
|
ev.output.x = e->pointer.x;
|
||||||
|
ev.output.y = e->pointer.y;
|
||||||
|
ev.canvas.x = e->pointer.x;
|
||||||
|
ev.canvas.y = e->pointer.y;
|
||||||
|
ev.data = (void *)data;
|
||||||
|
ev.modifiers = &(e->modifiers);
|
||||||
|
ev.locks = &(e->locks);
|
||||||
|
ev.timestamp = timestamp;
|
||||||
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
|
|
||||||
_evas_walk(e);
|
_evas_walk(e);
|
||||||
/* if our mouse button is grabbed to any objects */
|
/* if our mouse button is grabbed to any objects */
|
||||||
if (e->pointer.mouse_grabbed == 0)
|
if (e->pointer.mouse_grabbed == 0)
|
||||||
|
@ -786,21 +793,8 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
|
||||||
|
|
||||||
obj = l->data;
|
obj = l->data;
|
||||||
{
|
{
|
||||||
Evas_Event_Mouse_Out ev;
|
|
||||||
|
|
||||||
obj->mouse_in = 0;
|
obj->mouse_in = 0;
|
||||||
ev.buttons = e->pointer.button;
|
|
||||||
ev.output.x = e->pointer.x;
|
|
||||||
ev.output.y = e->pointer.y;
|
|
||||||
ev.canvas.x = e->pointer.x;
|
|
||||||
ev.canvas.y = e->pointer.y;
|
|
||||||
//// ev.canvas.x = e->pointer.canvas_x;
|
|
||||||
//// ev.canvas.y = e->pointer.canvas_y;
|
|
||||||
ev.data = (void *)data;
|
|
||||||
ev.modifiers = &(e->modifiers);
|
|
||||||
ev.locks = &(e->locks);
|
|
||||||
ev.timestamp = timestamp;
|
|
||||||
ev.event_flags = 0;
|
|
||||||
if (e->events_frozen <= 0)
|
if (e->events_frozen <= 0)
|
||||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
|
||||||
}
|
}
|
||||||
|
@ -842,7 +836,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch
|
||||||
ev.string = string;
|
ev.string = string;
|
||||||
ev.compose = compose;
|
ev.compose = compose;
|
||||||
ev.timestamp = timestamp;
|
ev.timestamp = timestamp;
|
||||||
ev.event_flags = 0;
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
if (e->grabs)
|
if (e->grabs)
|
||||||
{
|
{
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
@ -930,7 +924,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char
|
||||||
ev.string = string;
|
ev.string = string;
|
||||||
ev.compose = compose;
|
ev.compose = compose;
|
||||||
ev.timestamp = timestamp;
|
ev.timestamp = timestamp;
|
||||||
ev.event_flags = 0;
|
ev.event_flags = EVAS_EVENT_FLAG_NONE;
|
||||||
if (e->grabs)
|
if (e->grabs)
|
||||||
{
|
{
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
|
Loading…
Reference in New Issue