static Eina_List *
_evas_event_object_list_in_get(Evas *eo_e, Eina_List *in,
- const Eina_Inlist *list, const Eina_Clist *clist, Evas_Object *stop,
+ const Eina_Inlist *list,
+ const Eina_Clist *clist,
+ const Eina_List *list,
+ Evas_Object *stop,
int x, int y, int *no_rep, Eina_Bool source);
/* FIXME: use eina_list_clone */
(eo_e, in,
evas_object_smart_members_get_direct(eo_obj),
NULL,
+ NULL,
stop,
obj->cur->geometry.x + obj->map->cur.map->mx,
obj->cur->geometry.y + obj->map->cur.map->my,
obj->cur->geometry.y <= y &&
obj->cur->geometry.y + obj->cur->geometry.h >= y))
in = _evas_event_object_list_in_get
- (eo_e, in, evas_object_smart_members_get_direct(eo_obj), NULL,
+ (eo_e, in, evas_object_smart_members_get_direct(eo_obj), NULL, NULL,
stop, x, y, &norep, source);
}
if (norep)
{
int norep = 0;
in = _evas_event_object_list_in_get(eo_e, in,
- NULL, evas_object_event_grabber_members_list(eo_obj),
+ NULL, evas_object_event_grabber_members_list(eo_obj), NULL,
stop, x, y, &norep, source);
if (norep)
{
static Eina_List *
_evas_event_object_list_raw_in_get(Evas *eo_e, Eina_List *in,
- const Eina_Inlist *list, const Eina_Clist *clist, Evas_Object *stop,
+ const Eina_Inlist *ilist,
+ const Eina_Clist *clist,
+ const Eina_List *list,
+ Evas_Object *stop,
int x, int y, int *no_rep, Eina_Bool source)
{
Evas_Object_Protected_Data *obj = NULL;
static int spaces = 0;
#endif
- if ((!list) && (!clist)) return in;
+ if ((!ilist) && (!clist) && (!list)) return in;
#ifdef DDD_DO
spaces++;
#endif
- if (list)
+ if (ilist)
{
- for (obj = _EINA_INLIST_CONTAINER(obj, eina_inlist_last(list));
+ for (obj = _EINA_INLIST_CONTAINER(obj, eina_inlist_last(ilist));
obj;
obj = _EINA_INLIST_CONTAINER(obj, EINA_INLIST_GET(obj)->prev))
{
if (*no_rep) return in;
}
}
- else
+ else if (clist)
{
EINA_CLIST_FOR_EACH_ENTRY_SAFE_REV(obj, nobj, clist, Evas_Object_Protected_Data, events->event.member)
{
if (*no_rep) return in;
}
}
+ else
+ {
+ Eina_List *l;
+
+ EINA_LIST_REVERSE_FOREACH(list, l, obj)
+ {
+ in = _evas_event_object_list_raw_in_get_single(eo_e, obj, in, stop, x, y, no_rep, source
+#ifdef DDD_DO
+ ,&spaces
+#endif
+ );
+ if (*no_rep) return in;
+ }
+ }
*no_rep = 0;
#ifdef DDD_DO
spaces--;
{
proxy_write->src_event_in = _evas_event_object_list_raw_in_get
(eo_e, proxy_write->src_event_in,
- evas_object_smart_members_get_direct(eo_src), NULL,
+ evas_object_smart_members_get_direct(eo_src), NULL, NULL,
NULL, ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
}
else if (src->is_event_parent)
{
proxy_write->src_event_in = _evas_event_object_list_raw_in_get
(eo_e, proxy_write->src_event_in,
- NULL, evas_object_event_grabber_members_list(eo_src),
+ NULL, evas_object_event_grabber_members_list(eo_src), NULL,
NULL, ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
}
else
{
int no_rep = 0;
ins = _evas_event_object_list_raw_in_get(eo_e, ins, evas_object_smart_members_get_direct(eo_src),
- NULL, NULL, ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
+ NULL, NULL, NULL, ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
}
else if (src->is_event_parent)
{
int no_rep = 0;
ins = _evas_event_object_list_raw_in_get(eo_e, ins, NULL, evas_object_event_grabber_members_list(eo_src),
- NULL, ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
+ NULL, NULL, ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
}
else
ins = eina_list_append(ins, eo_src);
{
int no_rep = 0;
ins = _evas_event_object_list_raw_in_get
- (eo_e, ins, evas_object_smart_members_get_direct(eo_src), NULL, NULL,
+ (eo_e, ins, evas_object_smart_members_get_direct(eo_src), NULL, NULL, NULL,
ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
}
if (src->is_event_parent)
{
int no_rep = 0;
ins = _evas_event_object_list_raw_in_get
- (eo_e, ins, NULL, evas_object_event_grabber_members_list(eo_src), NULL,
+ (eo_e, ins, NULL, evas_object_event_grabber_members_list(eo_src), NULL, NULL,
ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
}
else
{
int no_rep = 0;
ins = _evas_event_object_list_raw_in_get(eo_e, ins, evas_object_smart_members_get_direct(eo_src),
- NULL, NULL, ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
+ NULL, NULL, NULL, ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
}
else if (src->is_event_parent)
{
int no_rep = 0;
ins = _evas_event_object_list_raw_in_get(eo_e, ins, NULL, evas_object_event_grabber_members_list(eo_src),
- NULL, ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
+ NULL, NULL, ev->cur.x, ev->cur.y, &no_rep, EINA_TRUE);
}
else
static Eina_List *
_evas_event_object_list_in_get(Evas *eo_e, Eina_List *in,
- const Eina_Inlist *list, const Eina_Clist *clist, Evas_Object *stop,
+ const Eina_Inlist *ilist,
+ const Eina_Clist *clist,
+ const Eina_List *list,
+ Evas_Object *stop,
int x, int y, int *no_rep, Eina_Bool source)
{
- return _evas_event_object_list_raw_in_get(eo_e, in, list, clist, stop, x, y,
+ return _evas_event_object_list_raw_in_get(eo_e, in, ilist, clist, list, stop, x, y,
no_rep, source);
}
int no_rep = 0;
D("############################# check layer %i\n", lay->layer);
in = _evas_event_object_list_in_get(eo_e, in,
- EINA_INLIST_GET(lay->objects), NULL,
+ EINA_INLIST_GET(lay->objects), NULL, NULL,
stop, x, y, &no_rep, EINA_FALSE);
if (no_rep) return in;
}