aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickitemlayer/tst_qquickitemlayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quick/qquickitemlayer/tst_qquickitemlayer.cpp')
-rw-r--r--tests/auto/quick/qquickitemlayer/tst_qquickitemlayer.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickitemlayer/tst_qquickitemlayer.cpp b/tests/auto/quick/qquickitemlayer/tst_qquickitemlayer.cpp
index ae6947f01b..90e1ab0a66 100644
--- a/tests/auto/quick/qquickitemlayer/tst_qquickitemlayer.cpp
+++ b/tests/auto/quick/qquickitemlayer/tst_qquickitemlayer.cpp
@@ -31,10 +31,12 @@
#include <QtQuick/qquickitem.h>
#include <QtQuick/qquickview.h>
#include <QtQuick/qsgrendererinterface.h>
+#include <QtQuick/private/qquickitem_p.h>
#include <qopenglcontext.h>
#include <qopenglfunctions.h>
#include <QtQuickTestUtils/private/qmlutils_p.h>
+#include <QtQuickTestUtils/private/viewtestutils_p.h>
#include <QtGui/private/qguiapplication_p.h>
#include <QtGui/qpa/qplatformintegration.h>
@@ -85,6 +87,8 @@ private slots:
void textureMirroring_data();
void textureMirroring();
+ void effectSourceResizeToItem();
+
private:
void mirroringCheck(int mirroring, int x, bool shouldMirror, const QImage &fb);
};
@@ -468,6 +472,25 @@ void tst_QQuickItemLayer::textureMirroring()
mirroringCheck(mirroring, 200, true, fb);
}
+void tst_QQuickItemLayer::effectSourceResizeToItem() // QTBUG-104442
+{
+ QQuickView window;
+ QVERIFY(QQuickTest::showView(window, testFileUrl("itemImageLayer.qml")));
+ window.setResizeMode(QQuickView::SizeRootObjectToView);
+ QQuickItem *image = window.rootObject()->findChild<QQuickItem*>("image");
+ QVERIFY(image);
+ QCOMPARE(image->size(), window.rootObject()->size());
+ QQuickItemLayer *layer = QQuickItemPrivate::get(image)->layer();
+ QVERIFY(layer);
+ auto *effectSource = layer->effectSource();
+ QVERIFY(effectSource);
+ QCOMPARE(effectSource->size(), image->size());
+
+ window.resize(200, 200); // shrink it a bit
+ QTRY_COMPARE(image->size().toSize(), QSize(200, 200)); // wait for the window system
+ QCOMPARE(effectSource->size(), image->size());
+}
+
void tst_QQuickItemLayer::mirroringCheck(int mirroring, int x, bool shouldMirror, const QImage &fb)
{
int offset = 10;