summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-05-01 03:00:09 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-05-01 03:00:09 +0200
commitdb8faea3a21e5a878865e1556c00b93720ebf275 (patch)
treee88079e652e81bb04aa8c83a7014b45230275de7
parent59ee4adfb0751f250c11301b2e0cef2de08cfa52 (diff)
parent0279e65c25b22066d15752267a6b5d1ba660e7d9 (diff)
downloadqtsvg-db8faea3a21e5a878865e1556c00b93720ebf275.tar.gz
Merge remote-tracking branch 'origin/5.11' into dev
Change-Id: I0896068c2364ef73b2dc5656dd5291a5bd4fc48d
-rw-r--r--src/svg/qsvgtinydocument_p.h9
-rw-r--r--tests/auto/qicon_svg/icons/rect_size_100percent.svg5
-rw-r--r--tests/auto/qicon_svg/tst_qicon_svg.cpp12
-rw-r--r--tests/auto/qicon_svg/tst_qicon_svg.qrc1
4 files changed, 24 insertions, 3 deletions
diff --git a/src/svg/qsvgtinydocument_p.h b/src/svg/qsvgtinydocument_p.h
index c69c5de..aa51751 100644
--- a/src/svg/qsvgtinydocument_p.h
+++ b/src/svg/qsvgtinydocument_p.h
@@ -141,11 +141,14 @@ private:
inline QSize QSvgTinyDocument::size() const
{
- if (m_size.isEmpty()) {
+ if (m_size.isEmpty())
return viewBox().size().toSize();
- } else {
- return m_size;
+ if (m_widthPercent || m_heightPercent) {
+ const int width = m_widthPercent ? qRound(0.01 * m_size.width() * viewBox().size().width()) : m_size.width();
+ const int height = m_heightPercent ? qRound(0.01 * m_size.height() * viewBox().size().height()) : m_size.height();
+ return QSize(width, height);
}
+ return m_size;
}
inline int QSvgTinyDocument::width() const
diff --git a/tests/auto/qicon_svg/icons/rect_size_100percent.svg b/tests/auto/qicon_svg/icons/rect_size_100percent.svg
new file mode 100644
index 0000000..84dece7
--- /dev/null
+++ b/tests/auto/qicon_svg/icons/rect_size_100percent.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 16 8">
+ <circle cx="8" cy="4" r="3" fill="#00ff00" />
+</svg>
diff --git a/tests/auto/qicon_svg/tst_qicon_svg.cpp b/tests/auto/qicon_svg/tst_qicon_svg.cpp
index 0875ee1..6eea018 100644
--- a/tests/auto/qicon_svg/tst_qicon_svg.cpp
+++ b/tests/auto/qicon_svg/tst_qicon_svg.cpp
@@ -44,6 +44,7 @@ private slots:
void svg();
void availableSizes();
void isNull();
+ void sizeInPercent();
private:
@@ -172,5 +173,16 @@ void tst_QIcon_Svg::isNull()
}
+void tst_QIcon_Svg::sizeInPercent()
+{
+ QIcon icon(prefix + "rect_size_100percent.svg");
+ QCOMPARE(icon.actualSize(QSize(16, 8)), QSize(16, 8));
+ QCOMPARE(icon.pixmap(QSize(16, 8)).size(), QSize(16, 8));
+
+ QCOMPARE(icon.actualSize(QSize(8, 8)), QSize(8, 4));
+ QCOMPARE(icon.pixmap(QSize(8, 8)).size(), QSize(8, 4));
+}
+
+
QTEST_MAIN(tst_QIcon_Svg)
#include "tst_qicon_svg.moc"
diff --git a/tests/auto/qicon_svg/tst_qicon_svg.qrc b/tests/auto/qicon_svg/tst_qicon_svg.qrc
index fd9422b..302b40b 100644
--- a/tests/auto/qicon_svg/tst_qicon_svg.qrc
+++ b/tests/auto/qicon_svg/tst_qicon_svg.qrc
@@ -5,5 +5,6 @@
<file>./icons/image.png</file>
<file>./icons/rect.svg</file>
<file>./icons/trash.svg</file>
+<file>./icons/rect_size_100percent.svg</file>
</qresource>
</RCC>