diff --git a/autotests/iconitemtest.cpp b/autotests/iconitemtest.cpp index 026dda46e..db63e4961 100644 --- a/autotests/iconitemtest.cpp +++ b/autotests/iconitemtest.cpp @@ -410,5 +410,23 @@ void IconItemTest::animatingEnabledChange() QVERIFY(img1 != img2); // animation is running } +void IconItemTest::windowChanged() +{ + QQuickItem *item = createIconItem(); + item->setProperty("animated", false); + item->setProperty("source", "tst-plasma-framework-test-icon"); + QImage img = grabImage(item); + + QQuickView newView; + newView.setSource(QUrl::fromLocalFile(QFINDTESTDATA("data/view.qml"))); + newView.show(); + QTest::qWaitForWindowExposed(&newView); + + item->setProperty("visible", false); + item->setParentItem(newView.rootObject()); + item->setProperty("visible", true); + QCOMPARE(grabImage(item), img); +} + QTEST_MAIN(IconItemTest) diff --git a/autotests/iconitemtest.h b/autotests/iconitemtest.h index 99ecc6cdb..e2e05c05b 100644 --- a/autotests/iconitemtest.h +++ b/autotests/iconitemtest.h @@ -52,6 +52,7 @@ private Q_SLOTS: void changeColorGroup(); void animatingActiveChange(); void animatingEnabledChange(); + void windowChanged(); private: QQuickItem *createIconItem(); diff --git a/src/declarativeimports/core/iconitem.cpp b/src/declarativeimports/core/iconitem.cpp index e1995614e..12008f8f9 100644 --- a/src/declarativeimports/core/iconitem.cpp +++ b/src/declarativeimports/core/iconitem.cpp @@ -69,6 +69,9 @@ IconItem::IconItem(QQuickItem *parent) connect(this, &QQuickItem::enabledChanged, this, &IconItem::enabledChanged); + connect(this, &QQuickItem::windowChanged, + this, &IconItem::schedulePixmapUpdate); + //initialize implicit size to the Dialog size setImplicitWidth(KIconLoader::global()->currentSize(KIconLoader::Dialog)); setImplicitHeight(KIconLoader::global()->currentSize(KIconLoader::Dialog));