diff --git a/src/client.c b/src/client.c index d40fe19003d7a518131b41fcc69c945857c1232d..57c315c596167936de1739d048bd5d3cb5b384cf 100644 --- a/src/client.c +++ b/src/client.c @@ -615,9 +615,6 @@ clientAdjustCoordGravity (Client *c, int gravity, XWindowChanges *wc, unsigned l } } -#define WIN_MOVED (mask & (CWX | CWY)) -#define WIN_RESIZED (mask & (CWWidth | CWHeight)) - static void clientConfigureWindows (Client *c, XWindowChanges * wc, unsigned long mask, unsigned short flags) { @@ -632,7 +629,7 @@ clientConfigureWindows (Client *c, XWindowChanges * wc, unsigned long mask, unsi change_mask_frame = mask & (CWX | CWY | CWWidth | CWHeight); change_mask_client = mask & (CWWidth | CWHeight); - if ((WIN_RESIZED) || (flags & CFG_FORCE_REDRAW)) + if ((mask & (CWWidth | CWHeight)) || (flags & CFG_FORCE_REDRAW)) { frameDraw (c, (flags & CFG_FORCE_REDRAW)); } @@ -662,7 +659,7 @@ clientConfigureWindows (Client *c, XWindowChanges * wc, unsigned long mask, unsi } myDisplayErrorTrapPopIgnored (display_info); - if (WIN_RESIZED) + if (mask & (CWWidth | CWHeight)) { compositorResizeWindow (display_info, c->frame, frameX (c), frameY (c), frameWidth (c), frameHeight (c)); } @@ -705,6 +702,7 @@ void clientConfigure (Client *c, XWindowChanges * wc, unsigned long mask, unsigned short flags) { int px, py, pwidth, pheight; + gboolean win_moved, win_resized; g_return_if_fail (c != NULL); g_return_if_fail (c->window != None); @@ -733,7 +731,7 @@ clientConfigure (Client *c, XWindowChanges * wc, unsigned long mask, unsigned sh } if (mask & CWWidth) { - c-> width = clientCheckWidth (c, wc->width, flags & CFG_REQUEST); + c->width = clientCheckWidth (c, wc->width, flags & CFG_REQUEST); } if (mask & CWHeight) { @@ -815,6 +813,7 @@ clientConfigure (Client *c, XWindowChanges * wc, unsigned long mask, unsigned sh { mask &= ~CWWidth; } + if (c->height != pheight) { mask |= CWHeight; @@ -841,13 +840,13 @@ clientConfigure (Client *c, XWindowChanges * wc, unsigned long mask, unsigned sh http://www.mail-archive.com/wm-spec-list@gnome.org/msg00382.html */ - if ((WIN_MOVED) || (flags & CFG_NOTIFY) || - ((flags & CFG_REQUEST) && !(WIN_MOVED || WIN_RESIZED))) + win_moved = (c->x != px || c->y != py); + win_resized = (c->width != pwidth || c->height != pheight); + if ((win_moved) || (flags & CFG_NOTIFY) || + ((flags & CFG_REQUEST) && !(win_moved || win_resized))) { clientSendConfigureNotify (c); } -#undef WIN_MOVED -#undef WIN_RESIZED } void