The stack order of sub-surface sometimes got messed up when re-stacking
main surfaces.
Thinking of the case as an example that placing a surface underneath
another surface that has sub-surfaces, it obviously wasn't enough to
re-arrange sub-surfaces stack order only for E_Client given by restack
callback function.
This patch fixes it by updating stack order not only for given E_Client,
but also for E_Clients neighbored with given E_Client.
Change-Id: I95f11c9998ed4f1729e7ca3583a4f41f5dc4edf8
static void
_e_comp_wl_subsurface_cb_comp_object_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- E_Client *ec;
+ E_Client *ec, *above, *below;
ec = data;
if ((!ec) || (!ec->comp_data))
return;
_e_comp_wl_subsurface_stack_update(ec);
+
+ above = e_client_above_get(ec);
+ if (above)
+ _e_comp_wl_subsurface_stack_update(above);
+
+ below = e_client_below_get(ec);
+ if (below)
+ _e_comp_wl_subsurface_stack_update(below);
}
static Eina_Bool