From 040ee80219083b0662ba34c7bf5a420cd8b645db Mon Sep 17 00:00:00 2001 From: Eirik Aavitsland Date: Mon, 8 Nov 2021 15:42:45 +0100 Subject: Avoid painting outside boundaries when printing QGraphicsProxyWidget MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implement clipping to widget geometry when rendering to other paintdevices. Fixes: QTBUG-98026 Change-Id: I5652bdb8cc052ae34f05ea7963943d2b5b28e220 Reviewed-by: Tor Arne Vestbø Reviewed-by: Richard Moe Gustavsen (cherry picked from commit 1a984b3d2dde484d105d19265bc516ba18da2894) Reviewed-by: Qt Cherry-pick Bot --- src/widgets/graphicsview/qgraphicsproxywidget.cpp | 4 ++++ 1 file changed, 4 insertions(+) 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); } -- cgit v1.2.3