diff options
-rw-r--r-- | shelf.c | 20 |
1 files changed, 14 insertions, 6 deletions
@@ -712,8 +712,13 @@ shelfDamageWindowRect (CompWindow *w, if (sw->scale != 1.0f) { + float xTranslate, yTranslate; + + xTranslate = w->input.left * (sw->scale - 1.0f); + yTranslate = w->input.top * (sw->scale - 1.0f); + damageTransformedWindowRect (w, sw->scale, sw->scale, - -w->input.left, -w->input.top, rect); + xTranslate, yTranslate, rect); status = TRUE; } @@ -752,14 +757,17 @@ shelfPaintWindow (CompWindow *w, if (sw->scale != 1.0f) { CompTransform mTransform = *transform; - int xOrigin, yOrigin; + float xTranslate, yTranslate; - xOrigin = w->attrib.x - w->input.left; - yOrigin = w->attrib.y - w->input.top; + xTranslate = w->input.left * (sw->scale - 1.0f); + yTranslate = w->input.top * (sw->scale - 1.0f); - matrixTranslate (&mTransform, xOrigin, yOrigin, 0); + matrixTranslate (&mTransform, w->attrib.x, w->attrib.y, 0); matrixScale (&mTransform, sw->scale, sw->scale, 0); - matrixTranslate (&mTransform, -xOrigin, -yOrigin, 0); + matrixTranslate (&mTransform, + xTranslate / sw->scale - w->attrib.x, + yTranslate / sw->scale - w->attrib.y, + 0.0f); mask |= PAINT_WINDOW_TRANSFORMED_MASK; |