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
bd43f07046
commit
1a982fd72a
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue