From 727cd45b5c3e17ce04fd51a5e7e623a3956adca5 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 10 May 2013 11:11:35 +0100 Subject: [PATCH] force window resize when pixmap comes back with a size that doesn't match the client window this causes comp to refetch the pixmap again with the correct size and allows windows which were shaded across a restart to be unshaded --- src/bin/e_comp.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index d7969b31f..5db4d2eb8 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -497,7 +497,17 @@ _e_comp_win_geometry_update(E_Comp_Win *cw) else if (cw->bd) { if (((!cw->bd->shaded) && (!cw->bd->shading)) && cw->pw && cw->ph) - w = cw->pw + cw->bd->client_inset.l + cw->bd->client_inset.r, h = cw->ph + cw->bd->client_inset.t + cw->bd->client_inset.b; + { + w = cw->pw + cw->bd->client_inset.l + cw->bd->client_inset.r, h = cw->ph + cw->bd->client_inset.t + cw->bd->client_inset.b; + if ((cw->pw != cw->bd->client.w) || (cw->ph != cw->bd->client.h)) + { + /* something fucked us and the pixmap came back with the wrong size + * fix it by forcing a resize in e_border + */ + BD_CHANGED(cw->bd); + cw->bd->changes.size = 1; + } + } else w = cw->bd->w, h = cw->bd->h; }