further improve csd calculations for x11 clients

there was previously a frame in which maximized x11 csd clients would
reposition themselves offscreen before rendering

this is now fixed by adjusting the client geometries either upon
unsetting the csd or re-setting it, allowing the client to retain its
expected positioning without jitters
This commit is contained in:
Mike Blumenkrantz 2015-11-16 16:21:52 -05:00
parent 9539e36707
commit 979d4724b9
1 changed files with 9 additions and 1 deletions

View File

@ -2821,9 +2821,12 @@ e_comp_object_frame_geometry_get(Evas_Object *obj, int *l, int *r, int *t, int *
E_API void
e_comp_object_frame_geometry_set(Evas_Object *obj, int l, int r, int t, int b)
{
Eina_Bool calc;
API_ENTRY;
if ((cw->client_inset.l == l) && (cw->client_inset.r == r) &&
(cw->client_inset.t == t) && (cw->client_inset.b == b)) return;
calc = cw->client_inset.calc;
cw->client_inset.calc = l || r || t || b;
eina_stringshare_replace(&cw->frame_theme, "borderless");
if (cw->client_inset.calc)
@ -2831,9 +2834,14 @@ e_comp_object_frame_geometry_set(Evas_Object *obj, int l, int r, int t, int b)
cw->ec->w += (l + r) - (cw->client_inset.l + cw->client_inset.r);
cw->ec->h += (t + b) - (cw->client_inset.t + cw->client_inset.b);
}
else if (cw->ec->maximized || cw->ec->fullscreen)
{
cw->ec->saved.x += l - cw->client_inset.l;
cw->ec->saved.y += t - cw->client_inset.t;
}
if (!cw->ec->new_client)
{
if (cw->client_inset.calc)
if (calc && cw->client_inset.calc)
{
cw->ec->x -= l - cw->client_inset.l;
cw->ec->y -= t - cw->client_inset.t;