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 <paul.tvete@qt.io>
This commit is contained in:
Laszlo Agocs 2022-10-21 12:01:26 +02:00
parent 65279d6e9d
commit d59b2fde5e

View File

@ -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)