From: Mike Blumenkrantz Date: Tue, 8 Sep 2015 21:47:48 +0000 (-0400) Subject: ensure that normal clients are stacked below overrides when raising X-Git-Tag: upstream/0.20.0~302 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cb2ddb736d0de1e31d6d82d33533995524749787;p=platform%2Fupstream%2Fenlightenment.git 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 --- diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 268f61d..e6176da 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -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 }