e - fix dnd problems coming from getting top object in comp canvas

so getting top object was broken. it didnt account for repeat event
objects that would be included. so get the full l,ist and walk them
top to bottom for the first one thats a client. THAT is the correct
thing to do. this would affect both x11 and wayland.

@fix
This commit is contained in:
Carsten Haitzler 2016-07-21 17:01:21 +09:00
parent bd43f07046
commit 1a982fd72a
1 changed files with 13 additions and 4 deletions

View File

@ -1477,13 +1477,22 @@ E_API Ecore_Window
e_comp_top_window_at_xy_get(Evas_Coord x, Evas_Coord y)
{
E_Client *ec;
Eina_List *objs, *l;
Evas_Object *o;
EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp, 0);
o = evas_object_top_at_xy_get(e_comp->evas, x, y, 0, 0);
if (!o) return e_comp->ee_win;
ec = evas_object_data_get(o, "E_Client");
if (ec) return e_client_util_pwin_get(ec);
objs = evas_objects_at_xy_get(e_comp->evas, x, y, 0, 0);
if (!objs) return e_comp->ee_win;
EINA_LIST_FOREACH(objs, l, o)
{
ec = evas_object_data_get(o, "E_Client");
if (ec)
{
eina_list_free(objs);
return e_client_util_pwin_get(ec);
}
}
eina_list_free(objs);
return e_comp->ee_win;
}