ensure that normal clients are stacked below overrides when raising

when a client is set to "Always on Top", it will be on the same layer
as override clients. this can cause strange stacking and mouse eventing
in cases where these windows occupy the same space and the normal client
is stacked over the override
This commit is contained in:
Mike Blumenkrantz 2015-09-08 17:47:48 -04:00
parent 8946e3e504
commit cb2ddb736d
1 changed files with 13 additions and 2 deletions

View File

@ -1323,8 +1323,19 @@ _e_comp_intercept_raise(void *data, Evas_Object *obj)
evas_object_raise(obj);
else
{
/* still stack below layer marker */
evas_object_stack_below(obj, e_comp->layers[cw->layer].obj);
Evas_Object *op;
/* still stack below override below the layer marker */
for (op = o = e_comp->layers[cw->layer].obj;
o && o != e_comp->layers[cw->layer - 1].obj;
op = o, o = evas_object_below_get(o))
{
E_Client *ec;
ec = e_comp_object_client_get(o);
if (ec && (!ec->override)) break;
}
evas_object_stack_below(obj, op);
if (e_client_focus_track_enabled())
e_client_raise_latest_set(cw->ec); //modify raise list if necessary
}