}
EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
- if (pdata->downs > 1) addgrab = pdata->downs - 1;
+ if (pdata->seat->downs > 1) addgrab = pdata->seat->downs - 1;
EINA_LIST_FOREACH(src->proxy->src_event_in, l, eo_child)
{
(obj_pdata->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN))
{
obj_pdata->mouse_grabbed += (addgrab + 1);
- pdata->mouse_grabbed += (addgrab + 1);
+ pdata->seat->mouse_grabbed += (addgrab + 1);
if (obj_pdata->pointer_mode ==
EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
{
- pdata->nogrep++;
+ pdata->seat->nogrep++;
break;
}
}
ev->source = eo_obj;
ev->tool = 0;
- if (pdata->mouse_grabbed)
+ if (pdata->seat->mouse_grabbed)
{
Eina_List *outs = NULL;
Eina_List *copy = evas_event_list_copy(src->proxy->src_event_in);
}
}
- if (pdata->mouse_grabbed == 0)
+ if (pdata->seat->mouse_grabbed == 0)
{
EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
{
(obj_pdata->mouse_grabbed > 0))
{
obj_pdata->mouse_grabbed--;
- pdata->mouse_grabbed--;
+ pdata->seat->mouse_grabbed--;
}
ev->cur = point;
if (e->delete_me) break;
if (pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
{
- if (pdata->nogrep > 0) pdata->nogrep--;
+ if (pdata->seat->nogrep > 0) pdata->seat->nogrep--;
break;
}
}
ev->source = obj->object;
ev->action = EFL_POINTER_ACTION_DOWN;
- if (pdata->downs > 1) addgrab = pdata->downs - 1;
+ if (pdata->seat->downs > 1) addgrab = pdata->seat->downs - 1;
EINA_LIST_FOREACH(src->proxy->src_event_in, l, eo_child)
{
if (obj_pdata->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB)
{
obj_pdata->mouse_grabbed += (addgrab + 1);
- pdata->mouse_grabbed += (addgrab + 1);
+ pdata->seat->mouse_grabbed += (addgrab + 1);
}
}
(obj_pdata->mouse_grabbed > 0))
{
obj_pdata->mouse_grabbed--;
- pdata->mouse_grabbed--;
+ pdata->seat->mouse_grabbed--;
}
ev->cur = point;
_evas_event_havemap_adjust_f(eo_child, child, &ev->cur, obj_pdata->mouse_grabbed);
/* Why a new event id here? Other 'source' events keep the same id. */
event_id = _evas_object_event_new();
- if (pdata->mouse_grabbed > 0)
+ if (pdata->seat->mouse_grabbed > 0)
{
copy = evas_event_list_copy(src->proxy->src_event_in);
EINA_LIST_FOREACH(copy, l, eo_child)
}
}
eina_list_free(copy);
- if (pdata->mouse_grabbed == 0)
+ if (pdata->seat->mouse_grabbed == 0)
{
EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
{
{
Evas_Pointer_Data *pdata = _evas_pointer_data_by_device_get(e, NULL);
if (!pdata) return;
- _canvas_event_feed_mouse_move_legacy(eo_e, e, pdata->x, pdata->y,
+ _canvas_event_feed_mouse_move_legacy(eo_e, e, pdata->seat->x, pdata->seat->y,
e->last_timestamp, NULL);
}
b = ev->button;
DBG("ButtonEvent:down time=%u x=%d y=%d button=%d downs=%d",
- ev->timestamp, pdata->x, pdata->y, b, pdata->downs);
+ ev->timestamp, pdata->seat->x, pdata->seat->y, b, pdata->seat->downs);
if ((b < 1) || (b > 32)) return;
pdata->button |= (1u << (b - 1));
- pdata->downs++;
+ pdata->seat->downs++;
if (e->is_frozen) return;
e->last_timestamp = ev->timestamp;
event_id = _evas_object_event_new();
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
ev->modifiers = &(e->modifiers);
ev->locks = &(e->locks);
ev->event_flags = e->default_event_flags;
_evas_walk(e);
/* append new touch point to the touch point list */
- _evas_touch_point_append(e->evas, 0, pdata->x, pdata->y);
+ _evas_touch_point_append(e->evas, 0, pdata->seat->x, pdata->seat->y);
/* If this is the first finger down, i.e no other fingers pressed,
* get a new event list, otherwise, keep the current grabbed list. */
- if (pdata->mouse_grabbed == 0)
+ if (pdata->seat->mouse_grabbed == 0)
{
Eina_List *ins = evas_event_objects_event_list(eo_e,
NULL,
- pdata->x,
- pdata->y);
+ pdata->seat->x,
+ pdata->seat->y);
/* free our old list of ins */
- pdata->object.in = eina_list_free(pdata->object.in);
+ pdata->seat->object.in = eina_list_free(pdata->seat->object.in);
/* and set up the new one */
- pdata->object.in = ins;
+ pdata->seat->object.in = ins;
/* adjust grabbed count by the nuymber of currently held down
* fingers/buttons */
- if (pdata->downs > 1) addgrab = pdata->downs - 1;
+ if (pdata->seat->downs > 1) addgrab = pdata->seat->downs - 1;
}
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
(obj_pdata->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN))
{
obj_pdata->mouse_grabbed += addgrab + 1;
- pdata->mouse_grabbed += addgrab + 1;
+ pdata->seat->mouse_grabbed += addgrab + 1;
if (obj_pdata->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
{
- pdata->nogrep++;
+ pdata->seat->nogrep++;
break;
}
}
ev->device);
continue;
}
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
pointer_mode = obj_pdata->pointer_mode;
_evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj_pdata->mouse_grabbed);
evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_DOWN, evt,
e->last_mouse_down_counter++;
_evas_post_event_callback_call(eo_e, e, event_id);
/* update touch point's state to EVAS_TOUCH_POINT_STILL */
- _evas_touch_point_update(eo_e, 0, pdata->x, pdata->y, EVAS_TOUCH_POINT_STILL);
+ _evas_touch_point_update(eo_e, 0, pdata->seat->x, pdata->seat->y, EVAS_TOUCH_POINT_STILL);
_evas_unwalk(e);
if (ev->device) efl_unref(ev->device);
ev->action = EFL_POINTER_ACTION_OUT;
/* get new list of ins */
- ins = evas_event_objects_event_list(eo_e, NULL, pdata->x, pdata->y);
+ ins = evas_event_objects_event_list(eo_e, NULL, pdata->seat->x, pdata->seat->y);
/* go thru old list of in objects */
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, ll, eo_obj)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
- if ((!eina_list_data_find(ins, eo_obj)) || (!pdata->inside))
+ if ((!eina_list_data_find(ins, eo_obj)) || (!pdata->seat->inside))
{
obj_pdata = _evas_object_pointer_data_get(pdata, obj);
if (!obj_pdata)
obj_pdata->mouse_in = 0;
if (!e->is_frozen)
{
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
_evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj_pdata->mouse_grabbed);
evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, evt,
event_id, EFL_EVENT_POINTER_OUT);
eina_list_free(copy);
- if (pdata->inside)
+ if (pdata->seat->inside)
{
Evas_Object *eo_obj_itr;
EINA_LIST_FOREACH(ins, l, eo_obj_itr)
{
Evas_Object_Protected_Data *obj_itr = efl_data_scope_get(eo_obj_itr, EFL_CANVAS_OBJECT_CLASS);
- if (!eina_list_data_find(pdata->object.in, eo_obj_itr))
+ if (!eina_list_data_find(pdata->seat->object.in, eo_obj_itr))
{
obj_pdata = _evas_object_pointer_data_get(pdata, obj_itr);
if (!obj_pdata)
if (obj_pdata->mouse_in) continue;
obj_pdata->mouse_in = 1;
if (e->is_frozen) continue;
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
_evas_event_havemap_adjust_f(eo_obj_itr, obj_itr, &ev->cur, obj_pdata->mouse_grabbed);
evas_object_event_callback_call(eo_obj_itr, obj_itr, EVAS_CALLBACK_MOUSE_IN, evt,
event_id, EFL_EVENT_POINTER_IN);
ins = eina_list_free(ins);
}
- if (pdata->mouse_grabbed == 0)
+ if (pdata->seat->mouse_grabbed == 0)
{
/* free our old list of ins */
- eina_list_free(pdata->object.in);
+ eina_list_free(pdata->seat->object.in);
/* and set up the new one */
- pdata->object.in = ins;
+ pdata->seat->object.in = ins;
}
else
{
/* free our cur ins */
eina_list_free(ins);
}
- if (pdata->inside)
+ if (pdata->seat->inside)
_evas_canvas_event_pointer_move_event_dispatch(e, pdata, ev->data);
efl_del(evt);
b = ev->button;
DBG("ButtonEvent:up time=%u x=%d y=%d button=%d downs=%d",
- ev->timestamp, pdata->x, pdata->y, b, pdata->downs);
+ ev->timestamp, pdata->seat->x, pdata->seat->y, b, pdata->seat->downs);
if ((b < 1) || (b > 32)) return;
- if (pdata->downs <= 0) return;
+ if (pdata->seat->downs <= 0) return;
pdata->button &= ~(1u << (b - 1));
- pdata->downs--;
+ pdata->seat->downs--;
if (e->is_frozen) return;
e->last_timestamp = ev->timestamp;
event_id = _evas_object_event_new();
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
ev->modifiers = &(e->modifiers);
ev->locks = &(e->locks);
ev->event_flags = e->default_event_flags;
_evas_walk(e);
/* update released touch point */
- _evas_touch_point_update(eo_e, 0, pdata->x, pdata->y, EVAS_TOUCH_POINT_UP);
- copy = evas_event_list_copy(pdata->object.in);
+ _evas_touch_point_update(eo_e, 0, pdata->seat->x, pdata->seat->y, EVAS_TOUCH_POINT_UP);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
Evas_Object_Pointer_Mode pointer_mode;
(obj_pdata->mouse_grabbed > 0))
{
obj_pdata->mouse_grabbed--;
- pdata->mouse_grabbed--;
+ pdata->seat->mouse_grabbed--;
}
pointer_mode = obj_pdata->pointer_mode;
if ((!e->is_frozen) &&
(!evas_event_freezes_through(eo_obj, obj)))
{
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
_evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj_pdata->mouse_grabbed);
evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_UP, evt,
event_id, EFL_EVENT_POINTER_UP);
}
if (pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
{
- if (pdata->nogrep > 0) pdata->nogrep--;
+ if (pdata->seat->nogrep > 0) pdata->seat->nogrep--;
break;
}
}
e->last_mouse_up_counter++;
_evas_post_event_callback_call(eo_e, e, event_id);
- if (pdata->mouse_grabbed == 0)
+ if (pdata->seat->mouse_grabbed == 0)
_post_up_handle(e, evt, pdata);
- if (pdata->mouse_grabbed < 0)
+ if (pdata->seat->mouse_grabbed < 0)
{
- ERR("BUG? pdata->mouse_grabbed (=%d) < 0!",
- pdata->mouse_grabbed);
+ ERR("BUG? pdata->seat->mouse_grabbed (=%d) < 0!",
+ pdata->seat->mouse_grabbed);
}
/* remove released touch point from the touch point list */
_evas_touch_point_remove(eo_e, 0);
if (!ev) return;
// adjust missing data based on evas state
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
ev->modifiers = &(e->modifiers);
ev->locks = &(e->locks);
ev->event_flags = e->default_event_flags;
ev->value_flags |= value_flags;
_evas_walk(e);
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
ev->device);
continue;
}
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
_evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj_pdata->mouse_grabbed);
evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_WHEEL, evt,
event_id, EFL_EVENT_POINTER_WHEEL);
e->last_timestamp = ev->timestamp;
// prev pos
- pdata->prev.x = pdata->x;
- pdata->prev.y = pdata->y;
- px = ev->prev.x = pdata->x;
- py = ev->prev.y = pdata->y;
+ pdata->seat->prev.x = pdata->seat->x;
+ pdata->seat->prev.y = pdata->seat->y;
+ px = ev->prev.x = pdata->seat->x;
+ py = ev->prev.y = pdata->seat->y;
// new pos
- x = pdata->x = ev->cur.x;
- y = pdata->y = ev->cur.y;
+ x = pdata->seat->x = ev->cur.x;
+ y = pdata->seat->y = ev->cur.y;
point = ev->cur;
- if ((!pdata->inside) && (pdata->mouse_grabbed == 0)) return;
+ if ((!pdata->seat->inside) && (pdata->seat->mouse_grabbed == 0)) return;
evt = ev->eo;
ev->modifiers = &(e->modifiers);
_evas_walk(e);
/* update moved touch point */
if ((px != x) || (py != y))
- _evas_touch_point_update(eo_e, 0, pdata->x, pdata->y, EVAS_TOUCH_POINT_MOVE);
+ _evas_touch_point_update(eo_e, 0, pdata->seat->x, pdata->seat->y, EVAS_TOUCH_POINT_MOVE);
/* if our mouse button is grabbed to any objects */
- if (pdata->mouse_grabbed > 0)
+ if (pdata->seat->mouse_grabbed > 0)
{
Eina_List *outs = NULL;
event_id = _evas_object_event_new();
/* go thru old list of in objects */
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
else
outs = eina_list_append(outs, eo_obj);
if ((obj_pdata->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) &&
- (pdata->nogrep > 0))
+ (pdata->seat->nogrep > 0))
{
eina_list_free(copy);
eina_list_free(outs);
if (!obj_pdata->mouse_in) continue;
obj_pdata->mouse_in = 0;
if (obj->delete_me || e->is_frozen) continue;
- pdata->object.in = eina_list_remove(pdata->object.in, eo_obj);
+ pdata->seat->object.in = eina_list_remove(pdata->seat->object.in, eo_obj);
ev->cur = point;
_evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj_pdata->mouse_grabbed);
evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, evt,
/* get all new in objects */
ins = evas_event_objects_event_list(eo_e, NULL, x, y);
/* go thru old list of in objects */
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
{
obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
/* if its not in the old list of ins send an enter event */
- if (!eina_list_data_find(pdata->object.in, eo_obj))
+ if (!eina_list_data_find(pdata->seat->object.in, eo_obj))
{
obj_pdata = _evas_object_pointer_data_get(pdata, obj);
if (!obj_pdata)
}
}
}
- if (pdata->mouse_grabbed == 0)
+ if (pdata->seat->mouse_grabbed == 0)
{
/* free our old list of ins */
- eina_list_free(pdata->object.in);
+ eina_list_free(pdata->seat->object.in);
/* and set up the new one */
- pdata->object.in = ins;
+ pdata->seat->object.in = ins;
}
else
{
event_id = _evas_object_event_new();
/* go thru old list of in objects */
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
if (eo_obj == nogrep_obj)
int norep = 0;
ins = _evas_event_object_list_raw_in_get(eo_e, NULL,
EINA_INLIST_GET(below_obj), NULL,
- pdata->x, pdata->y,
+ pdata->seat->x, pdata->seat->y,
&norep, EINA_FALSE);
}
{
obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
/* if its not in the old list of ins send an enter event */
- if (!eina_list_data_find(pdata->object.in, eo_obj))
+ if (!eina_list_data_find(pdata->seat->object.in, eo_obj))
{
obj_pdata = _evas_object_pointer_data_get(pdata, obj);
if (!obj_pdata)
}
}
/* free our old list of ins */
- eina_list_free(pdata->object.in);
+ eina_list_free(pdata->seat->object.in);
/* and set up the new one */
- pdata->object.in = newin;
+ pdata->seat->object.in = newin;
_evas_post_event_callback_call(eo_e, e, event_id);
}
pdata = _evas_pointer_data_by_device_get(e, ev->device);
if (!pdata) return;
- pdata->inside = 1;
+ pdata->seat->inside = 1;
if (e->is_frozen) return;
e->last_timestamp = ev->timestamp;
- if (pdata->mouse_grabbed != 0) return;
+ if (pdata->seat->mouse_grabbed != 0) return;
evt = ev->eo;
ev->action = EFL_POINTER_ACTION_IN;
ev->pressed_buttons = pdata->button;
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
ev->modifiers = &(e->modifiers);
ev->locks = &(e->locks);
ev->event_flags = e->default_event_flags;
_evas_walk(e);
/* get new list of ins */
- ins = evas_event_objects_event_list(eo_e, NULL, pdata->x, pdata->y);
+ ins = evas_event_objects_event_list(eo_e, NULL, pdata->seat->x, pdata->seat->y);
EINA_LIST_FOREACH(ins, l, eo_obj)
{
Evas_Object_Pointer_Data *obj_pdata;
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
- if (!eina_list_data_find(pdata->object.in, eo_obj))
+ if (!eina_list_data_find(pdata->seat->object.in, eo_obj))
{
obj_pdata = _evas_object_pointer_data_get(pdata, obj);
if (!obj_pdata)
}
if (obj_pdata->mouse_in) continue;
obj_pdata->mouse_in = 1;
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
_evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj_pdata->mouse_grabbed);
evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, evt,
event_id, EFL_EVENT_POINTER_IN);
}
}
/* free our old list of ins */
- pdata->object.in = eina_list_free(pdata->object.in);
+ pdata->seat->object.in = eina_list_free(pdata->seat->object.in);
/* and set up the new one */
- pdata->object.in = ins;
+ pdata->seat->object.in = ins;
_evas_post_event_callback_call(eo_e, e, event_id);
_canvas_event_feed_mouse_move_internal(e, ev);
_evas_unwalk(e);
EVAS_EVENT_FEED_SAFETY_CHECK(e);
pdata = _evas_pointer_data_by_device_get(e, ev->device);
if (!pdata) return;
- pdata->inside = 0;
+ pdata->seat->inside = 0;
if (e->is_frozen) return;
e->last_timestamp = ev->timestamp;
evt = ev->eo;
ev->action = EFL_POINTER_ACTION_OUT;
ev->pressed_buttons = pdata->button;
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
ev->modifiers = &(e->modifiers);
ev->locks = &(e->locks);
ev->event_flags = e->default_event_flags;
_evas_walk(e);
/* if our mouse button is inside any objects */
/* go thru old list of in objects */
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
Evas_Object_Pointer_Data *obj_pdata;
}
if (!obj_pdata->mouse_in) continue;
obj_pdata->mouse_in = 0;
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
_evas_event_havemap_adjust_f(eo_obj, obj, &ev->cur, obj_pdata->mouse_grabbed);
evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, evt,
event_id, EFL_EVENT_POINTER_OUT);
eina_list_free(copy);
/* free our old list of ins */
- pdata->object.in = eina_list_free(pdata->object.in);
- pdata->mouse_grabbed = 0;
+ pdata->seat->object.in = eina_list_free(pdata->seat->object.in);
+ pdata->seat->mouse_grabbed = 0;
_evas_post_event_callback_call(eo_e, e, event_id);
_evas_unwalk(e);
if (!pdata) return;
eo_e = e->evas;
DBG("ButtonEvent:multi down time=%u x=%.1f y=%.1f button=%d downs=%d",
- ev->timestamp, ev->cur.x, ev->cur.y, ev->tool, pdata->downs);
- pdata->downs++;
+ ev->timestamp, ev->cur.x, ev->cur.y, ev->tool, pdata->seat->downs);
+ pdata->seat->downs++;
if (e->is_frozen) return;
e->last_timestamp = ev->timestamp;
_evas_walk(e);
/* append new touch point to the touch point list */
_evas_touch_point_append(eo_e, ev->tool, ev->cur.x, ev->cur.y);
- if (pdata->mouse_grabbed == 0)
+ if (pdata->seat->mouse_grabbed == 0)
{
- if (pdata->downs > 1) addgrab = pdata->downs - 1;
+ if (pdata->seat->downs > 1) addgrab = pdata->seat->downs - 1;
}
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if (obj_pdata->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB)
{
obj_pdata->mouse_grabbed += addgrab + 1;
- pdata->mouse_grabbed += addgrab + 1;
+ pdata->seat->mouse_grabbed += addgrab + 1;
}
}
EINA_LIST_FOREACH(copy, l, eo_obj)
if (!pdata) return;
eo_e = e->evas;
DBG("ButtonEvent:multi up time=%u x=%.1f y=%.1f device=%d downs=%d",
- ev->timestamp, ev->cur.x, ev->cur.y, ev->tool, pdata->downs);
- if (pdata->downs <= 0) return;
- pdata->downs--;
+ ev->timestamp, ev->cur.x, ev->cur.y, ev->tool, pdata->seat->downs);
+ if (pdata->seat->downs <= 0) return;
+ pdata->seat->downs--;
if (e->is_frozen) return;
e->last_timestamp = ev->timestamp;
_evas_walk(e);
/* update released touch point */
_evas_touch_point_update(eo_e, ev->tool, ev->cur.x, ev->cur.y, EVAS_TOUCH_POINT_UP);
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
Evas_Object_Pointer_Data *obj_pdata;
(obj_pdata->mouse_grabbed > 0))
{
obj_pdata->mouse_grabbed--;
- pdata->mouse_grabbed--;
+ pdata->seat->mouse_grabbed--;
}
evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_UP, evt,
event_id, EFL_EVENT_FINGER_UP);
if (e->delete_me || e->is_frozen) break;
}
eina_list_free(copy);
- if (pdata->mouse_grabbed == 0)
+ if (pdata->seat->mouse_grabbed == 0)
{
_post_up_handle(e, evt, pdata);
_evas_post_event_callback_call(eo_e, e, event_id);
if (e->is_frozen) return;
e->last_timestamp = ev->timestamp;
- if ((!pdata->inside) && (pdata->mouse_grabbed == 0)) return;
+ if ((!pdata->seat->inside) && (pdata->seat->mouse_grabbed == 0)) return;
evt = ev->eo;
ev->modifiers = &(e->modifiers);
/* update moved touch point */
_evas_touch_point_update(eo_e, ev->tool, ev->cur.x, ev->cur.y, EVAS_TOUCH_POINT_MOVE);
/* if our mouse button is grabbed to any objects */
- if (pdata->mouse_grabbed > 0)
+ if (pdata->seat->mouse_grabbed > 0)
{
/* go thru old list of in objects */
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
/* get all new in objects */
ins = evas_event_objects_event_list(eo_e, NULL, ev->cur.x, ev->cur.y);
/* go thru old list of in objects */
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if (e->delete_me || e->is_frozen) break;
}
eina_list_free(copy);
- if (pdata->mouse_grabbed == 0)
+ if (pdata->seat->mouse_grabbed == 0)
{
/* free our old list of ins */
- eina_list_free(pdata->object.in);
+ eina_list_free(pdata->seat->object.in);
/* and set up the new one */
- pdata->object.in = ins;
+ pdata->seat->object.in = ins;
}
else
{
_evas_walk(e);
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if (ev->device) efl_ref(ev->device);
_evas_walk(e);
- copy = evas_event_list_copy(pdata->object.in);
+ copy = evas_event_list_copy(pdata->seat->object.in);
EINA_LIST_FOREACH(copy, l, eo_obj)
{
Evas_Pointer_Data *pdata = _evas_pointer_data_by_device_get(evas, NULL);
if (!pdata) return;
- in_output_rect = evas_object_is_in_output_rect(eo_obj, obj, pdata->x,
- pdata->y, 1, 1);
+ in_output_rect = evas_object_is_in_output_rect(eo_obj, obj, pdata->seat->x,
+ pdata->seat->y, 1, 1);
if ((in_output_rect) &&
((!obj->precise_is_inside) || (evas_object_is_inside(eo_obj, obj,
- pdata->x,
- pdata->y))))
+ pdata->seat->x,
+ pdata->seat->y))))
{
_canvas_event_feed_mouse_move_legacy(evas->evas, evas,
- pdata->x, pdata->y,
+ pdata->seat->x, pdata->seat->y,
evas->last_timestamp, NULL);
}
}
if (obj_pdata->pointer_mode == setting) return EINA_FALSE;
/* adjust by number of pointer down events */
- addgrab = pdata->downs;
+ addgrab = pdata->seat->downs;
switch (obj_pdata->pointer_mode)
{
/* nothing needed */
/* decrement canvas nogrep (NO Grab/REPeat) counter */
case EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN:
if (obj_pdata->mouse_grabbed)
- pdata->nogrep--;
+ pdata->seat->nogrep--;
/* fall through */
/* remove related grabs from canvas and object */
case EVAS_OBJECT_POINTER_MODE_AUTOGRAB:
if (obj_pdata->mouse_grabbed)
{
- pdata->mouse_grabbed -= obj_pdata->mouse_grabbed;
+ pdata->seat->mouse_grabbed -= obj_pdata->mouse_grabbed;
obj_pdata->mouse_grabbed = 0;
}
}
case EVAS_OBJECT_POINTER_MODE_NOGRAB: break;
/* increment canvas nogrep (NO Grab/REPeat) counter */
case EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN:
- pdata->nogrep++;
+ pdata->seat->nogrep++;
/* having nogrep set indicates that any object following it in
* the pointer.object.in list will not be receiving events, meaning
* that they will fail to unset any existing grabs/flags. unset them
* now to avoid breaking the canvas
*/
- EINA_LIST_FOREACH(pdata->object.in, l, cobj)
+ EINA_LIST_FOREACH(pdata->seat->object.in, l, cobj)
{
Evas_Object_Protected_Data *cobj_data;
if (!cobj_pdata) continue;
if (!cobj_pdata->mouse_grabbed) continue;
cobj_pdata->mouse_grabbed -= addgrab;
- pdata->mouse_grabbed -= addgrab;
+ pdata->seat->mouse_grabbed -= addgrab;
if (cobj_pdata->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
- pdata->nogrep--;
+ pdata->seat->nogrep--;
}
break;
}
/* add all button grabs to this object */
case EVAS_OBJECT_POINTER_MODE_AUTOGRAB:
obj_pdata->mouse_grabbed += addgrab;
- pdata->mouse_grabbed += addgrab;
+ pdata->seat->mouse_grabbed += addgrab;
}
obj_pdata->pointer_mode = setting;
return EINA_TRUE;
/* For smart objects, this is a bit expensive obj->mouse_in will not be set.
* Alternatively we could count the number of in and out events propagated
* to the smart object, assuming they always match. */
- EINA_LIST_FOREACH(pdata->object.in, l, eo_in)
+ EINA_LIST_FOREACH(pdata->seat->object.in, l, eo_in)
{
if (EINA_UNLIKELY(eo_in == eo_obj))
return EINA_TRUE;
{
Evas_Pointer_Data *pdata = _evas_pointer_data_by_device_get(e, dev);
EINA_SAFETY_ON_NULL_RETURN_VAL(pdata, 0);
- return pdata->downs;
+ return pdata->seat->downs;
}
EOLIAN int
ev->data = (void *) data;
ev->timestamp = edata->last_timestamp;
ev->device = efl_ref(pdata->pointer);
- ev->cur.x = pdata->x;
- ev->cur.y = pdata->y;
+ ev->cur.x = pdata->seat->x;
+ ev->cur.y = pdata->seat->y;
_canvas_event_feed_mouse_move_internal(edata, ev);
EINA_LIST_FOREACH(edata->pointers, l, pdata)
{
- if (!evas_object_is_in_output_rect(obj, obj_data, pdata->x,
- pdata->y, w, h))
+ if (!evas_object_is_in_output_rect(obj, obj_data, pdata->seat->x,
+ pdata->seat->y, w, h))
continue;
- if ((in_objects_list && eina_list_data_find(pdata->object.in, obj)) || !in_objects_list)
+ if ((in_objects_list && eina_list_data_find(pdata->seat->object.in, obj)) || !in_objects_list)
_evas_canvas_event_pointer_move_event_dispatch(edata, pdata, data);
}
}
EINA_LIST_FOREACH(edata->pointers, l, pdata)
{
- int in = evas_object_is_in_output_rect(obj, obj_data, pdata->x,
- pdata->y, w, h);
+ int in = evas_object_is_in_output_rect(obj, obj_data, pdata->seat->x,
+ pdata->seat->y, w, h);
Evas_Pointer_Data *found = eina_list_data_find(was, pdata);
if ((xor_rule && ((in && !found) || (!in && found))) ||