diff options
author | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2021-11-08 15:42:45 +0100 |
---|---|---|
committer | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2021-11-09 01:34:31 +0100 |
commit | 1a984b3d2dde484d105d19265bc516ba18da2894 (patch) | |
tree | 7dd3e739d4c410a232e5e80f7b568554d345262c /src | |
parent | 851ed6f0b1014e5acabdc1f977979841d16ecc31 (diff) |
Avoid painting outside boundaries when printing QGraphicsProxyWidget
Implement clipping to widget geometry when rendering to other
paintdevices.
Fixes: QTBUG-98026
Pick-to: 6.2 5.15
Change-Id: I5652bdb8cc052ae34f05ea7963943d2b5b28e220
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/widgets/graphicsview/qgraphicsproxywidget.cpp | 4 |
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); } |