From d59b2fde5eef39cc1735cadf2327f99ca6055306 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Fri, 21 Oct 2022 12:01:26 +0200 Subject: [PATCH] Fix texture-based native child widget stretching The new rhi-based approach to compositing has a difference in transform calculation which becomes relevant with native child widgets (so when the flush offset is > 0). This is incorrect, so restore how 6.3 and earlier did this calculation. Pick-to: 6.4 Fixes: QTBUG-107814 Change-Id: I98fe866d6c857343f25f39450ee60fd307bcdb63 Reviewed-by: Paul Olav Tvete --- src/gui/painting/qbackingstoredefaultcompositor.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gui/painting/qbackingstoredefaultcompositor.cpp b/src/gui/painting/qbackingstoredefaultcompositor.cpp index 8f624210da..076ae3e984 100644 --- a/src/gui/painting/qbackingstoredefaultcompositor.cpp +++ b/src/gui/painting/qbackingstoredefaultcompositor.cpp @@ -508,8 +508,7 @@ QPlatformBackingStore::FlushResult QBackingStoreDefaultCompositor::flush(QPlatfo if (m_texture) { // The backingstore is for the entire tlw. // In case of native children offset tells the position relative to the tlw. - const QRect textureRect = QRect(QPoint(), m_texture->pixelSize()); - const QRect srcRect = toBottomLeftRect(textureRect.translated(deviceWindowOffset), m_texture->pixelSize().height()); + const QRect srcRect = toBottomLeftRect(deviceWindowRect.translated(deviceWindowOffset), m_texture->pixelSize().height()); const QMatrix3x3 source = sourceTransform(srcRect, m_texture->pixelSize(), origin); QMatrix4x4 target; // identity if (invertTargetY)