summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp8
-rw-r--r--src/plugins/iconengines/svgiconengine/qsvgiconengine.h1
-rw-r--r--tests/auto/qicon_svg/tst_qicon_svg.cpp23
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"