diff options
-rw-r--r-- | src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp | 8 | ||||
-rw-r--r-- | src/plugins/iconengines/svgiconengine/qsvgiconengine.h | 1 | ||||
-rw-r--r-- | tests/auto/qicon_svg/tst_qicon_svg.cpp | 23 |
3 files changed, 32 insertions, 0 deletions
diff --git a/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp b/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp index 53e9a57..0798e48 100644 --- a/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp +++ b/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp @@ -375,6 +375,14 @@ bool QSvgIconEngine::write(QDataStream &out) const return true; } +void QSvgIconEngine::virtual_hook(int id, void *data) +{ + if (id == QIconEngine::IsNullHook) { + *reinterpret_cast<bool*>(data) = d->svgFiles.isEmpty() && !d->addedPixmaps; + } + QIconEngine::virtual_hook(id, data); +} + QT_END_NAMESPACE #endif // QT_NO_SVGRENDERER diff --git a/src/plugins/iconengines/svgiconengine/qsvgiconengine.h b/src/plugins/iconengines/svgiconengine/qsvgiconengine.h index cf4f255..672828c 100644 --- a/src/plugins/iconengines/svgiconengine/qsvgiconengine.h +++ b/src/plugins/iconengines/svgiconengine/qsvgiconengine.h @@ -70,6 +70,7 @@ public: bool read(QDataStream &in) override; bool write(QDataStream &out) const override; + void virtual_hook(int id, void *data) override; private: QSharedDataPointer<QSvgIconEnginePrivate> d; }; diff --git a/tests/auto/qicon_svg/tst_qicon_svg.cpp b/tests/auto/qicon_svg/tst_qicon_svg.cpp index 2271f21..170ec37 100644 --- a/tests/auto/qicon_svg/tst_qicon_svg.cpp +++ b/tests/auto/qicon_svg/tst_qicon_svg.cpp @@ -43,6 +43,8 @@ private slots: void svgActualSize(); void svg(); void availableSizes(); + void isNull(); + private: QString prefix; @@ -139,5 +141,26 @@ void tst_QIcon_Svg::availableSizes() } } +void tst_QIcon_Svg::isNull() +{ + { + //checks that an invalid file results in the icon being null + QIcon icon(prefix + "nonExistentFile.svg"); + QVERIFY(icon.isNull()); + } + { + //valid svg, we're not null + QIcon icon(prefix + "heart.svg"); + QVERIFY(!icon.isNull()); + } + { + //invalid svg, but a pixmap added means we're not null + QIcon icon(prefix + "nonExistentFile.svg"); + icon.addFile(prefix + "image.png", QSize(32,32)); + QVERIFY(!icon.isNull()); + } + +} + QTEST_MAIN(tst_QIcon_Svg) #include "tst_qicon_svg.moc" |