diff --git a/src/wall.c b/src/wall.c index f31fdd2..9a72208 100644 --- a/src/wall.c +++ b/src/wall.c @@ -656,6 +656,8 @@ static Bool wallMoveViewport(CompScreen * s, int x, int y, Window moveWindow) ws->destx = newDestX; ws->desty = newDestY; + moveScreenViewport(s, ws->destx, ws->desty, TRUE); + ws->moving = TRUE; ws->timer = (int)newTimeout - ws->timer; if (ws->moveWindow != moveWindow) @@ -1798,7 +1800,6 @@ static void wallPreparePaintScreen(CompScreen * s, int ms) if (ws->moving && ws->timer <= 0) { ws->moving = FALSE; - moveScreenViewport(s, ws->destx, ws->desty, TRUE); ws->timer = 0; if (ws->moveWindow) wallReleaseMoveWindow(s); @@ -2069,6 +2070,7 @@ static void wallPaintTransformedScreen(CompScreen * s, float dx, dy; wallGetDistanceForAnimation(s, left, output, &dx, &dy); + matrixTranslate(&sTransform, -ws->destx, ws->desty,0); matrixTranslate(&sTransform, dx, -dy, 0); for (i = -abs(ws->destx); i < s->hsize; i++) // TODO: Add a slight bit of intelligence to not be so ineffecient