summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEirik Aavitsland <eirik.aavitsland@qt.io>2021-11-08 15:42:45 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-11-09 00:34:41 +0000
commit040ee80219083b0662ba34c7bf5a420cd8b645db (patch)
tree0e1a5977aa7eee0e35aa6d68b9e8c8d3a64dd2b3 /src
parentaca63e7840bbb6db72bfdc95ff3f092785e465eb (diff)
Avoid painting outside boundaries when printing QGraphicsProxyWidget
Implement clipping to widget geometry when rendering to other paintdevices. Fixes: QTBUG-98026 Change-Id: I5652bdb8cc052ae34f05ea7963943d2b5b28e220 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 1a984b3d2dde484d105d19265bc516ba18da2894) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/widgets/graphicsview/qgraphicsproxywidget.cpp b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
index e6ce275bef..7b381367c3 100644
--- a/src/widgets/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
@@ -1576,6 +1576,10 @@ void QGraphicsProxyWidget::paint(QPainter *painter, const QStyleOptionGraphicsIt
if (exposedWidgetRect.isEmpty())
return;
+ // When rendering to pdf etc. painting may go outside widget boundaries unless clipped
+ if (painter->device()->devType() != QInternal::Widget && (flags() & ItemClipsChildrenToShape))
+ painter->setClipRect(d->widget->geometry(), Qt::IntersectClip);
+
d->widget->render(painter, exposedWidgetRect.topLeft(), exposedWidgetRect);
}