forked from enlightenment/enlightenment
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:
parent
8d7358a66f
commit
bd3fb818ba
|
@ -1477,13 +1477,22 @@ E_API Ecore_Window
|
||||||
e_comp_top_window_at_xy_get(Evas_Coord x, Evas_Coord y)
|
e_comp_top_window_at_xy_get(Evas_Coord x, Evas_Coord y)
|
||||||
{
|
{
|
||||||
E_Client *ec;
|
E_Client *ec;
|
||||||
|
Eina_List *objs, *l;
|
||||||
Evas_Object *o;
|
Evas_Object *o;
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp, 0);
|
EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp, 0);
|
||||||
o = evas_object_top_at_xy_get(e_comp->evas, x, y, 0, 0);
|
objs = evas_objects_at_xy_get(e_comp->evas, x, y, 0, 0);
|
||||||
if (!o) return e_comp->ee_win;
|
if (!objs) return e_comp->ee_win;
|
||||||
|
EINA_LIST_FOREACH(objs, l, o)
|
||||||
|
{
|
||||||
ec = evas_object_data_get(o, "E_Client");
|
ec = evas_object_data_get(o, "E_Client");
|
||||||
if (ec) return e_client_util_pwin_get(ec);
|
if (ec)
|
||||||
|
{
|
||||||
|
eina_list_free(objs);
|
||||||
|
return e_client_util_pwin_get(ec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
eina_list_free(objs);
|
||||||
return e_comp->ee_win;
|
return e_comp->ee_win;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue