diff --git a/src/scene.cpp b/src/scene.cpp index 4cfeb2571f..a44527e5e4 100644 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -260,7 +260,7 @@ void Scene::prePaint(Output *output) setRenderTargetScale(1); } else { painted_screen = output; - setRenderTargetRect(painted_screen->geometry()); + setRenderTargetRect(painted_screen->fractionalGeometry()); setRenderTargetScale(painted_screen->scale()); } @@ -409,7 +409,7 @@ void Scene::postPaint() clearStackingOrder(); } -static QMatrix4x4 createProjectionMatrix(const QRect &rect, qreal scale) +static QMatrix4x4 createProjectionMatrix(const QRectF &rect, qreal scale) { QMatrix4x4 ret; ret.ortho(QRectF(rect.left() * scale, rect.top() * scale, rect.width() * scale, rect.height() * scale)); @@ -423,10 +423,10 @@ QMatrix4x4 Scene::renderTargetProjectionMatrix() const QRect Scene::renderTargetRect() const { - return m_renderTargetRect; + return m_renderTargetRect.toRect(); } -void Scene::setRenderTargetRect(const QRect &rect) +void Scene::setRenderTargetRect(const QRectF &rect) { if (rect == m_renderTargetRect) { return; diff --git a/src/scene.h b/src/scene.h index 160add93f6..4b332f934e 100644 --- a/src/scene.h +++ b/src/scene.h @@ -168,7 +168,7 @@ public: QMatrix4x4 renderTargetProjectionMatrix() const; QRect renderTargetRect() const; - void setRenderTargetRect(const QRect &rect); + void setRenderTargetRect(const QRectF &rect); qreal renderTargetScale() const; void setRenderTargetScale(qreal scale); @@ -233,7 +233,7 @@ private: QList m_delegates; QRect m_geometry; QMatrix4x4 m_renderTargetProjectionMatrix; - QRect m_renderTargetRect; + QRectF m_renderTargetRect; qreal m_renderTargetScale = 1; // how many times finalPaintScreen() has been called int m_paintScreenCount = 0;