aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-default-thumbnail.pngbin0 -> 6159 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-material-dark.pngbin4981 -> 14996 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-material-light.pngbin0 -> 14682 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-material-purple.pngbin0 -> 4981 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-material-thumbnail.pngbin0 -> 12572 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-material.pngbin29049 -> 0 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-styles.pngbin0 -> 48670 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-universal-dark.pngbin2894 -> 12152 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-universal-light.pngbin0 -> 12564 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-universal-thumbnail.pngbin0 -> 9512 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-universal-violet.pngbin0 -> 2894 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-universal.pngbin25572 -> 0 bytes
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-index.qdoc39
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-material.qdoc11
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc80
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc11
-rw-r--r--src/quickcontrols2/qquickstyle.cpp9
-rw-r--r--src/quicktemplates2/configure.json9
-rw-r--r--src/quicktemplates2/qquickapplicationwindow.cpp21
-rw-r--r--src/quicktemplates2/qquickcontrol.cpp4
-rw-r--r--src/quicktemplates2/qquickcontrol_p.h2
-rw-r--r--src/quicktemplates2/qquickcontrol_p_p.h2
-rw-r--r--src/quicktemplates2/qquickdial.cpp2
-rw-r--r--src/quicktemplates2/qquickdial_p.h2
-rw-r--r--src/quicktemplates2/qquickdrawer.cpp10
-rw-r--r--src/quicktemplates2/qquickdrawer_p.h2
-rw-r--r--src/quicktemplates2/qquickdrawer_p_p.h2
-rw-r--r--src/quicktemplates2/qquickmenu.cpp5
-rw-r--r--src/quicktemplates2/qquickmenu_p.h1
-rw-r--r--src/quicktemplates2/qquickoverlay.cpp12
-rw-r--r--src/quicktemplates2/qquickoverlay_p.h2
-rw-r--r--src/quicktemplates2/qquickoverlay_p_p.h2
-rw-r--r--src/quicktemplates2/qquickpopup.cpp23
-rw-r--r--src/quicktemplates2/qquickpopup_p.h2
-rw-r--r--src/quicktemplates2/qquickpopup_p_p.h4
-rw-r--r--src/quicktemplates2/qquickpopupitem.cpp4
-rw-r--r--src/quicktemplates2/qquickpopupitem_p_p.h2
-rw-r--r--src/quicktemplates2/qquickrangeslider.cpp6
-rw-r--r--src/quicktemplates2/qquickrangeslider_p.h2
-rw-r--r--src/quicktemplates2/qquickslider.cpp2
-rw-r--r--src/quicktemplates2/qquickslider_p.h2
-rw-r--r--src/quicktemplates2/qquickswitch.cpp2
-rw-r--r--src/quicktemplates2/qquickswitch_p.h2
-rw-r--r--src/quicktemplates2/qquickswitchdelegate.cpp2
-rw-r--r--src/quicktemplates2/qquickswitchdelegate_p.h2
-rw-r--r--tests/auto/auto.pro3
-rw-r--r--tests/auto/font/data/font-appwindow-custom.qml62
-rw-r--r--tests/auto/font/data/font-appwindow-default.qml55
-rw-r--r--tests/auto/font/data/font-control-custom.qml62
-rw-r--r--tests/auto/font/data/font-control-default.qml55
-rw-r--r--tests/auto/font/data/font-popup-custom.qml62
-rw-r--r--tests/auto/font/data/font-popup-default.qml55
-rw-r--r--tests/auto/font/data/inheritance-childcontrol.qml76
-rw-r--r--tests/auto/font/data/inheritance-childpopup.qml76
-rw-r--r--tests/auto/font/data/inheritance-control.qml74
-rw-r--r--tests/auto/font/data/inheritance-dynamicchildcontrol.qml75
-rw-r--r--tests/auto/font/data/inheritance-dynamicchildpopup.qml80
-rw-r--r--tests/auto/font/data/inheritance-dynamiccontrol.qml71
-rw-r--r--tests/auto/font/data/inheritance-dynamicpopup.qml76
-rw-r--r--tests/auto/font/data/inheritance-popup.qml74
-rw-r--r--tests/auto/font/font.pro14
-rw-r--r--tests/auto/font/tst_font.cpp289
-rw-r--r--tests/auto/qquickstyle/data/DummyStyle/Button.qml2
-rw-r--r--tests/auto/qquickstyle/data/designer/ButtonSpecifics.qml3
-rw-r--r--tests/auto/qquickstyle/data/dummy.dSYM/empty0
-rw-r--r--tests/auto/qquickstyle/qquickstyle.pro2
-rw-r--r--tests/auto/qquickstyle/tst_qquickstyle.cpp15
68 files changed, 1453 insertions, 112 deletions
diff --git a/.gitignore b/.gitignore
index 775a39da..400fe075 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,6 +36,7 @@
/tests/auto/cursor/tst_cursor
/tests/auto/drawer/tst_drawer
/tests/auto/focus/tst_focus
+/tests/auto/font/tst_font
/tests/auto/menu/tst_menu
/tests/auto/palette/tst_palette
/tests/auto/platform/tst_platform
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-default-thumbnail.png b/src/imports/controls/doc/images/qtquickcontrols2-default-thumbnail.png
new file mode 100644
index 00000000..5afcb6d7
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols2-default-thumbnail.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-material-dark.png b/src/imports/controls/doc/images/qtquickcontrols2-material-dark.png
index 8afb2cd6..eb0350dd 100644
--- a/src/imports/controls/doc/images/qtquickcontrols2-material-dark.png
+++ b/src/imports/controls/doc/images/qtquickcontrols2-material-dark.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-material-light.png b/src/imports/controls/doc/images/qtquickcontrols2-material-light.png
new file mode 100644
index 00000000..2635de68
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols2-material-light.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-material-purple.png b/src/imports/controls/doc/images/qtquickcontrols2-material-purple.png
new file mode 100644
index 00000000..8afb2cd6
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols2-material-purple.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-material-thumbnail.png b/src/imports/controls/doc/images/qtquickcontrols2-material-thumbnail.png
new file mode 100644
index 00000000..c1084673
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols2-material-thumbnail.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-material.png b/src/imports/controls/doc/images/qtquickcontrols2-material.png
deleted file mode 100644
index 4caef89e..00000000
--- a/src/imports/controls/doc/images/qtquickcontrols2-material.png
+++ /dev/null
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-styles.png b/src/imports/controls/doc/images/qtquickcontrols2-styles.png
new file mode 100644
index 00000000..aae046fd
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols2-styles.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-universal-dark.png b/src/imports/controls/doc/images/qtquickcontrols2-universal-dark.png
index ec459457..2d6937c7 100644
--- a/src/imports/controls/doc/images/qtquickcontrols2-universal-dark.png
+++ b/src/imports/controls/doc/images/qtquickcontrols2-universal-dark.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-universal-light.png b/src/imports/controls/doc/images/qtquickcontrols2-universal-light.png
new file mode 100644
index 00000000..a6da6f7f
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols2-universal-light.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-universal-thumbnail.png b/src/imports/controls/doc/images/qtquickcontrols2-universal-thumbnail.png
new file mode 100644
index 00000000..a189ed72
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols2-universal-thumbnail.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-universal-violet.png b/src/imports/controls/doc/images/qtquickcontrols2-universal-violet.png
new file mode 100644
index 00000000..ec459457
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols2-universal-violet.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-universal.png b/src/imports/controls/doc/images/qtquickcontrols2-universal.png
deleted file mode 100644
index b50d9cca..00000000
--- a/src/imports/controls/doc/images/qtquickcontrols2-universal.png
+++ /dev/null
Binary files differ
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
index 81318cde..f64901d5 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
@@ -35,46 +35,11 @@
to build complete interfaces in Qt Quick. The module was introduced
in Qt 5.7.
+ \image qtquickcontrols2-styles.png
+
Qt Quick Controls 2 comes with a selection customizable styles.
See \l {Styling Qt Quick Controls 2} for more details.
- \raw HTML
- <table style="background:transparent; border:0px" width="66%">
- <tr>
- <td style="border:0px; padding-right:25px;">
- <a href="qtquickcontrols2-default.html">
- <img src="images/qtquickcontrols2-default.png" alt="Default" width="100%"/>
- </a>
- </td>
- <td style="border:0px">
- <a href="qtquickcontrols2-material.html">
- <img src="images/qtquickcontrols2-material.png" alt="Material" width="100%"/>
- </a>
- </td>
- </tr>
- <tr>
- <td style="border:0px">Default Style</td>
- <td style="border:0px">Material Style</td>
- </tr>
- <tr>
- <td style="border:0px; padding-top:45px; padding-right:25px;">
- <a href="qtquickcontrols2-fusion.html">
- <img src="images/qtquickcontrols2-fusion.png" alt="Fusion" width="100%"/>
- </a>
- </td>
- <td style="border:0px; padding-top:45px; ">
- <a href="qtquickcontrols2-universal.html">
- <img src="images/qtquickcontrols2-universal.png" alt="Universal" width="100%"/>
- </a>
- </td>
- </tr>
- <tr>
- <td style="border:0px">Fusion Style</td>
- <td style="border:0px">Universal Style</td>
- </tr>
- </table>
- \endraw
-
\section1 Prerequisites
The \l{Qt Quick Controls 2 QML Types}{QML types} can be imported into your
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc
index f661a28d..f1d1f1e6 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc
@@ -58,8 +58,13 @@
{Google Material Design Guidelines}. It allows for a unified experience
across platforms and device sizes.
- \image qtquickcontrols2-material.png
- \caption The Material style in light and dark themes
+ \table
+ \row
+ \li \image qtquickcontrols2-material-light.png
+ \caption The Material style in light theme
+ \li \image qtquickcontrols2-material-dark.png
+ \caption The Material style in dark theme
+ \endtable
To run an application with the Material style, see
\l {Using Styles in Qt Quick Controls 2}.
@@ -108,7 +113,7 @@
}
\endqml
\li
- \image qtquickcontrols2-material-dark.png
+ \image qtquickcontrols2-material-purple.png
\endtable
In addition to specifying the attributes in QML, it is also possible to
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc
index 472b02c9..03be5320 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc
@@ -29,60 +29,36 @@
\page qtquickcontrols2-styles.html
\title Styling Qt Quick Controls 2
+ \section1 Available Styles
+
Qt Quick Controls 2 comes with a selection of styles.
- \raw HTML
- <table style="background:transparent; border:0px">
- <tr>
- <td style="border:0px; padding-right:25px">
- <a href="qtquickcontrols2-default.html">
- <img src="images/qtquickcontrols2-default.png" width="45%"/>
- </a>
- </td>
- <td style="border:0px">
- <a href="qtquickcontrols2-material.html">
- <img src="images/qtquickcontrols2-material.png" width="75%"/>
- </a>
- </td>
- </tr>
- <tr>
- <td style="border:0px">
- The <a href="qtquickcontrols2-default.html">Default</a> style is
- a simple and light-weight all-round style that offers the maximum
- performance for Qt Quick Controls 2.
- </td>
- <td style="border:0px">
- The <a href="qtquickcontrols2-material.html">Material</a> style offers an appealing design
- based on the <a href="https://www.google.com/design/spec/material-design/introduction.html">
- Google Material Design Guidelines</a>, but requires more system resources than the Default style.
- </td>
- </tr>
- <tr>
- <td style="border:0px; padding-top:45px; padding-right:25px;">
- <a href="qtquickcontrols2-fusion.html">
- <img src="images/qtquickcontrols2-fusion.png" width="75%"/>
- </a>
- </td>
- <td style="border:0px; padding-top:45px;">
- <a href="qtquickcontrols2-universal.html">
- <img src="images/qtquickcontrols2-universal.png" width="75%"/>
- </a>
- </td>
- </tr>
- <tr>
- <td style="border:0px">
- The <a href="qtquickcontrols2-fusion.html">Fusion</a> style is
- a platform-agnostic style that offers a desktop-oriented look'n'feel
- for Qt Quick Controls 2.
- </td>
- <td style="border:0px">
- The <a href="qtquickcontrols2-universal.html">Universal</a> style offers an appealing design
- based on the <a href="https://dev.windows.com/design">Microsoft Universal Design Guidelines</a>,
- but requires more system resources than the Default style.
- </td>
- </tr>
- </table>
- \endraw
+ \section2 Default Style
+
+ \image qtquickcontrols2-default-thumbnail.png
+ The \l {Default Style} is a simple and light-weight all-round style that offers
+ the maximum performance for Qt Quick Controls 2.
+
+ \section2 Fusion Style
+
+ \image qtquickcontrols2-fusion-thumbnail.png
+ The \l {Fusion Style} is a platform-agnostic style that offers a desktop-oriented
+ look'n'feel for Qt Quick Controls 2.
+
+ \section2 Material Style
+
+ \image qtquickcontrols2-material-thumbnail.png
+ The \l {Material Style} offers an appealing design based on the
+ \l {https://www.google.com/design/spec/material-design/introduction.html}
+ {Google Material Design Guidelines}, but requires more system resources than
+ the Default style.
+
+ \section2 Universal Style
+
+ \image qtquickcontrols2-universal-thumbnail.png
+ The \l {Universal Style} offers an appealing design based on the
+ \l {https://dev.windows.com/design}{Microsoft Universal Design Guidelines},
+ but requires more system resources than the Default style.
\section1 Using Styles in Qt Quick Controls 2
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc
index b4fe4dfa..8e88f345 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc
@@ -57,8 +57,13 @@
The Universal style has been designed to look good on all devices, from
phones and tablets to PCs.
- \image qtquickcontrols2-universal.png
- \caption The Universal style in light and dark themes
+ \table
+ \row
+ \li \image qtquickcontrols2-universal-light.png
+ \caption The Universal style in light theme
+ \li \image qtquickcontrols2-universal-dark.png
+ \caption The Universal style in dark theme
+ \endtable
To run an application with the Universal style, see
\l {Using Styles in Qt Quick Controls 2}.
@@ -107,7 +112,7 @@
}
\endqml
\li
- \image qtquickcontrols2-universal-dark.png
+ \image qtquickcontrols2-universal-violet.png
\endtable
In addition to specifying the attributes in QML, it is also possible to
diff --git a/src/quickcontrols2/qquickstyle.cpp b/src/quickcontrols2/qquickstyle.cpp
index f154f0ce..48d1dc17 100644
--- a/src/quickcontrols2/qquickstyle.cpp
+++ b/src/quickcontrols2/qquickstyle.cpp
@@ -428,9 +428,12 @@ QStringList QQuickStyle::availableStyles()
const QStringList stylePaths = QQuickStylePrivate::stylePaths();
for (const QString &path : stylePaths) {
- QDir dir(path);
- styles += dir.entryList(QStringList(), QDir::Dirs | QDir::NoDotAndDotDot);
- styles.removeAll(QStringLiteral("designer"));
+ const QList<QFileInfo> entries = QDir(path).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
+ for (const QFileInfo &entry : entries) {
+ const QString name = entry.fileName();
+ if (!name.endsWith(QLatin1String(".dSYM")) && name != QLatin1String("designer"))
+ styles += name;
+ }
}
styles.prepend(QStringLiteral("Default"));
styles.removeDuplicates();
diff --git a/src/quicktemplates2/configure.json b/src/quicktemplates2/configure.json
index 45899e1f..030e668b 100644
--- a/src/quicktemplates2/configure.json
+++ b/src/quicktemplates2/configure.json
@@ -7,6 +7,12 @@
"purpose": "Provides support for hover effects.",
"section": "Quick Templates 2",
"output": [ "privateFeature" ]
+ },
+ "quicktemplates2-multitouch": {
+ "label": "Multi-touch support",
+ "purpose": "Provides support for multi-touch.",
+ "section": "Quick Templates 2",
+ "output": [ "privateFeature" ]
}
},
@@ -14,7 +20,8 @@
{
"section": "Qt Quick Templates 2",
"entries": [
- "quicktemplates2-hover"
+ "quicktemplates2-hover",
+ "quicktemplates2-multitouch"
]
}
]
diff --git a/src/quicktemplates2/qquickapplicationwindow.cpp b/src/quicktemplates2/qquickapplicationwindow.cpp
index ff062259..a6523553 100644
--- a/src/quicktemplates2/qquickapplicationwindow.cpp
+++ b/src/quicktemplates2/qquickapplicationwindow.cpp
@@ -36,7 +36,7 @@
#include "qquickapplicationwindow_p.h"
#include "qquickoverlay_p.h"
-#include "qquickpopup_p.h"
+#include "qquickpopup_p_p.h"
#include "qquickcontrol_p_p.h"
#include "qquicktextarea_p.h"
#include "qquicktextfield_p.h"
@@ -179,6 +179,8 @@ public:
void _q_updateActiveFocus();
void setActiveFocusControl(QQuickItem *item);
+ static void contentData_append(QQmlListProperty<QObject> *prop, QObject *obj);
+
bool complete;
QQuickItem *background;
QQuickItem *contentItem;
@@ -268,7 +270,6 @@ void QQuickApplicationWindowPrivate::updateFont(const QFont &f)
QQuickControlPrivate::updateFontRecur(q->QQuickWindow::contentItem(), f);
- // TODO: internal QQuickPopupManager that provides reliable access to all QQuickPopup instances
const QList<QQuickPopup *> popups = q->findChildren<QQuickPopup *>();
for (QQuickPopup *popup : popups)
QQuickControlPrivate::get(static_cast<QQuickControl *>(popup->popupItem()))->inheritFont(f);
@@ -340,6 +341,15 @@ void QQuickApplicationWindowPrivate::setActiveFocusControl(QQuickItem *control)
}
}
+void QQuickApplicationWindowPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObject *obj)
+{
+ QQuickItemPrivate::data_append(prop, obj);
+
+ // associate "top-level" popups with the window as soon as they are added to the default property
+ if (QQuickPopup *popup = qobject_cast<QQuickPopup *>(obj))
+ QQuickPopupPrivate::get(popup)->setWindow(static_cast<QQuickApplicationWindow *>(prop->data));
+}
+
QQuickApplicationWindow::QQuickApplicationWindow(QWindow *parent)
: QQuickWindowQmlImpl(parent), d_ptr(new QQuickApplicationWindowPrivate)
{
@@ -539,7 +549,11 @@ void QQuickApplicationWindow::setFooter(QQuickItem *footer)
*/
QQmlListProperty<QObject> QQuickApplicationWindow::contentData()
{
- return QQuickItemPrivate::get(contentItem())->data();
+ return QQmlListProperty<QObject>(contentItem(), this,
+ QQuickApplicationWindowPrivate::contentData_append,
+ QQuickItemPrivate::data_count,
+ QQuickItemPrivate::data_at,
+ QQuickItemPrivate::data_clear);
}
/*!
@@ -670,7 +684,6 @@ void QQuickApplicationWindow::resetFont()
setFont(QFont());
}
-
/*!
\qmlproperty Locale QtQuick.Controls::ApplicationWindow::locale
diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp
index 06f8c8a2..dca50244 100644
--- a/src/quicktemplates2/qquickcontrol.cpp
+++ b/src/quicktemplates2/qquickcontrol.cpp
@@ -144,6 +144,7 @@ QQuickControlPrivate::~QQuickControlPrivate()
#endif
}
+#if QT_CONFIG(quicktemplates2_multitouch)
bool QQuickControlPrivate::acceptTouch(const QTouchEvent::TouchPoint &point)
{
if (point.id() == touchId)
@@ -156,6 +157,7 @@ bool QQuickControlPrivate::acceptTouch(const QTouchEvent::TouchPoint &point)
return false;
}
+#endif
void QQuickControlPrivate::handlePress(const QPointF &)
{
@@ -1474,6 +1476,7 @@ void QQuickControl::mouseUngrabEvent()
d->handleUngrab();
}
+#if QT_CONFIG(quicktemplates2_multitouch)
void QQuickControl::touchEvent(QTouchEvent *event)
{
Q_D(QQuickControl);
@@ -1528,6 +1531,7 @@ void QQuickControl::touchUngrabEvent()
Q_D(QQuickControl);
d->handleUngrab();
}
+#endif
#if QT_CONFIG(wheelevent)
void QQuickControl::wheelEvent(QWheelEvent *event)
diff --git a/src/quicktemplates2/qquickcontrol_p.h b/src/quicktemplates2/qquickcontrol_p.h
index 5207d46c..eaf00ced 100644
--- a/src/quicktemplates2/qquickcontrol_p.h
+++ b/src/quicktemplates2/qquickcontrol_p.h
@@ -193,8 +193,10 @@ protected:
void mouseMoveEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
void mouseUngrabEvent() override;
+#if QT_CONFIG(quicktemplates2_multitouch)
void touchEvent(QTouchEvent *event) override;
void touchUngrabEvent() override;
+#endif
#if QT_CONFIG(wheelevent)
void wheelEvent(QWheelEvent *event) override;
#endif
diff --git a/src/quicktemplates2/qquickcontrol_p_p.h b/src/quicktemplates2/qquickcontrol_p_p.h
index 54346016..e990e44f 100644
--- a/src/quicktemplates2/qquickcontrol_p_p.h
+++ b/src/quicktemplates2/qquickcontrol_p_p.h
@@ -76,7 +76,9 @@ public:
return control->d_func();
}
+#if QT_CONFIG(quicktemplates2_multitouch)
virtual bool acceptTouch(const QTouchEvent::TouchPoint &point);
+#endif
virtual void handlePress(const QPointF &point);
virtual void handleMove(const QPointF &point);
virtual void handleRelease(const QPointF &point);
diff --git a/src/quicktemplates2/qquickdial.cpp b/src/quicktemplates2/qquickdial.cpp
index 7e740ade..bdbfb22d 100644
--- a/src/quicktemplates2/qquickdial.cpp
+++ b/src/quicktemplates2/qquickdial.cpp
@@ -666,6 +666,7 @@ void QQuickDial::mouseMoveEvent(QMouseEvent *event)
QQuickControl::mouseMoveEvent(event);
}
+#if QT_CONFIG(quicktemplates2_multitouch)
void QQuickDial::touchEvent(QTouchEvent *event)
{
Q_D(QQuickDial);
@@ -702,6 +703,7 @@ void QQuickDial::touchEvent(QTouchEvent *event)
break;
}
}
+#endif
#if QT_CONFIG(wheelevent)
void QQuickDial::wheelEvent(QWheelEvent *event)
diff --git a/src/quicktemplates2/qquickdial_p.h b/src/quicktemplates2/qquickdial_p.h
index 1a6d70fd..959cb154 100644
--- a/src/quicktemplates2/qquickdial_p.h
+++ b/src/quicktemplates2/qquickdial_p.h
@@ -136,7 +136,9 @@ protected:
void keyReleaseEvent(QKeyEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
+#if QT_CONFIG(quicktemplates2_multitouch)
void touchEvent(QTouchEvent *event) override;
+#endif
#if QT_CONFIG(wheelevent)
void wheelEvent(QWheelEvent *event) override;
#endif
diff --git a/src/quicktemplates2/qquickdrawer.cpp b/src/quicktemplates2/qquickdrawer.cpp
index 8159f05e..66c84ea2 100644
--- a/src/quicktemplates2/qquickdrawer.cpp
+++ b/src/quicktemplates2/qquickdrawer.cpp
@@ -278,6 +278,7 @@ bool QQuickDrawerPrivate::startDrag(QEvent *event)
}
break;
+#if QT_CONFIG(quicktemplates2_multitouch)
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
for (const QTouchEvent::TouchPoint &point : static_cast<QTouchEvent *>(event)->touchPoints()) {
@@ -288,6 +289,7 @@ bool QQuickDrawerPrivate::startDrag(QEvent *event)
}
}
break;
+#endif
default:
break;
@@ -340,6 +342,7 @@ bool QQuickDrawerPrivate::grabMouse(QQuickItem *item, QMouseEvent *event)
return overThreshold;
}
+#if QT_CONFIG(quicktemplates2_multitouch)
bool QQuickDrawerPrivate::grabTouch(QQuickItem *item, QTouchEvent *event)
{
Q_Q(QQuickDrawer);
@@ -385,6 +388,7 @@ bool QQuickDrawerPrivate::grabTouch(QQuickItem *item, QTouchEvent *event)
return overThreshold;
}
+#endif
static const qreal openCloseVelocityThreshold = 300;
@@ -672,8 +676,10 @@ bool QQuickDrawer::childMouseEventFilter(QQuickItem *child, QEvent *event)
{
Q_D(QQuickDrawer);
switch (event->type()) {
+#if QT_CONFIG(quicktemplates2_multitouch)
case QEvent::TouchUpdate:
return d->grabTouch(child, static_cast<QTouchEvent *>(event));
+#endif
case QEvent::MouseMove:
return d->grabMouse(child, static_cast<QMouseEvent *>(event));
case QEvent::MouseButtonPress:
@@ -695,8 +701,10 @@ bool QQuickDrawer::overlayEvent(QQuickItem *item, QEvent *event)
{
Q_D(QQuickDrawer);
switch (event->type()) {
+#if QT_CONFIG(quicktemplates2_multitouch)
case QEvent::TouchUpdate:
return d->grabTouch(item, static_cast<QTouchEvent *>(event));
+#endif
case QEvent::MouseMove:
return d->grabMouse(item, static_cast<QMouseEvent *>(event));
default:
@@ -705,11 +713,13 @@ bool QQuickDrawer::overlayEvent(QQuickItem *item, QEvent *event)
return QQuickPopup::overlayEvent(item, event);
}
+#if QT_CONFIG(quicktemplates2_multitouch)
void QQuickDrawer::touchEvent(QTouchEvent *event)
{
Q_D(QQuickDrawer);
d->grabTouch(d->popupItem, event);
}
+#endif
void QQuickDrawer::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
diff --git a/src/quicktemplates2/qquickdrawer_p.h b/src/quicktemplates2/qquickdrawer_p.h
index 9ab1c4ef..3ec007df 100644
--- a/src/quicktemplates2/qquickdrawer_p.h
+++ b/src/quicktemplates2/qquickdrawer_p.h
@@ -88,7 +88,9 @@ protected:
bool childMouseEventFilter(QQuickItem *child, QEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
bool overlayEvent(QQuickItem *item, QEvent *event) override;
+#if QT_CONFIG(quicktemplates2_multitouch)
void touchEvent(QTouchEvent *event) override;
+#endif
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
diff --git a/src/quicktemplates2/qquickdrawer_p_p.h b/src/quicktemplates2/qquickdrawer_p_p.h
index 110aa350..92de9010 100644
--- a/src/quicktemplates2/qquickdrawer_p_p.h
+++ b/src/quicktemplates2/qquickdrawer_p_p.h
@@ -74,7 +74,9 @@ public:
bool startDrag(QEvent *event);
bool grabMouse(QQuickItem *item, QMouseEvent *event);
+#if QT_CONFIG(quicktemplates2_multitouch)
bool grabTouch(QQuickItem *item, QTouchEvent *event);
+#endif
bool handlePress(QQuickItem* item, const QPointF &point, ulong timestamp) override;
bool handleMove(QQuickItem* item, const QPointF &point, ulong timestamp) override;
diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp
index 781bd6da..fa6b88ef 100644
--- a/src/quicktemplates2/qquickmenu.cpp
+++ b/src/quicktemplates2/qquickmenu.cpp
@@ -806,6 +806,11 @@ void QQuickMenu::keyReleaseEvent(QKeyEvent *event)
item->forceActiveFocus();
}
+QFont QQuickMenu::defaultFont() const
+{
+ return QQuickControlPrivate::themeFont(QPlatformTheme::MenuFont);
+}
+
QPalette QQuickMenu::defaultPalette() const
{
return QQuickControlPrivate::themePalette(QPlatformTheme::MenuPalette);
diff --git a/src/quicktemplates2/qquickmenu_p.h b/src/quicktemplates2/qquickmenu_p.h
index 5dffa898..04186f1a 100644
--- a/src/quicktemplates2/qquickmenu_p.h
+++ b/src/quicktemplates2/qquickmenu_p.h
@@ -101,6 +101,7 @@ Q_SIGNALS:
Q_REVISION(3) void delegateChanged();
protected:
+ QFont defaultFont() const override;
QPalette defaultPalette() const override;
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickoverlay.cpp b/src/quicktemplates2/qquickoverlay.cpp
index 15104808..a4aaa60d 100644
--- a/src/quicktemplates2/qquickoverlay.cpp
+++ b/src/quicktemplates2/qquickoverlay.cpp
@@ -276,6 +276,7 @@ bool QQuickOverlayPrivate::handleMouseEvent(QQuickItem *source, QMouseEvent *eve
return false;
}
+#if QT_CONFIG(quicktemplates2_multitouch)
bool QQuickOverlayPrivate::handleTouchEvent(QQuickItem *source, QTouchEvent *event, QQuickPopup *target)
{
bool handled = false;
@@ -309,6 +310,7 @@ bool QQuickOverlayPrivate::handleTouchEvent(QQuickItem *source, QTouchEvent *eve
return handled;
}
+#endif
void QQuickOverlayPrivate::addPopup(QQuickPopup *popup)
{
@@ -475,11 +477,13 @@ void QQuickOverlay::mouseReleaseEvent(QMouseEvent *event)
d->handleMouseEvent(this, event);
}
+#if QT_CONFIG(quicktemplates2_multitouch)
void QQuickOverlay::touchEvent(QTouchEvent *event)
{
Q_D(QQuickOverlay);
d->handleTouchEvent(this, event);
}
+#endif
#if QT_CONFIG(wheelevent)
void QQuickOverlay::wheelEvent(QWheelEvent *event)
@@ -516,10 +520,12 @@ bool QQuickOverlay::childMouseEventFilter(QQuickItem *item, QEvent *event)
// does not have background dimming.
if (item == p->dimmer || !p->popupItem->isAncestorOf(item)) {
switch (event->type()) {
+#if QT_CONFIG(quicktemplates2_multitouch)
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
return d->handleTouchEvent(item, static_cast<QTouchEvent *>(event), popup);
+#endif
case QEvent::MouseButtonPress:
case QEvent::MouseMove:
@@ -541,6 +547,7 @@ bool QQuickOverlay::eventFilter(QObject *object, QEvent *event)
return false;
switch (event->type()) {
+#if QT_CONFIG(quicktemplates2_multitouch)
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
@@ -567,10 +574,13 @@ bool QQuickOverlay::eventFilter(QObject *object, QEvent *event)
// touch events, to be able to close non-modal popups on release outside.
event->accept();
return true;
+#endif
case QEvent::MouseButtonPress:
+#if QT_CONFIG(quicktemplates2_multitouch)
// do not emit pressed() twice when mouse events have been synthesized from touch events
if (static_cast<QMouseEvent *>(event)->source() == Qt::MouseEventNotSynthesized)
+#endif
emit pressed();
QQuickWindowPrivate::get(d->window)->handleMouseEvent(static_cast<QMouseEvent *>(event));
@@ -583,8 +593,10 @@ bool QQuickOverlay::eventFilter(QObject *object, QEvent *event)
return true;
case QEvent::MouseButtonRelease:
+#if QT_CONFIG(quicktemplates2_multitouch)
// do not emit released() twice when mouse events have been synthesized from touch events
if (static_cast<QMouseEvent *>(event)->source() == Qt::MouseEventNotSynthesized)
+#endif
emit released();
// allow non-modal popups to close on mouse release outside
diff --git a/src/quicktemplates2/qquickoverlay_p.h b/src/quicktemplates2/qquickoverlay_p.h
index 7d1ff143..ba61c9c9 100644
--- a/src/quicktemplates2/qquickoverlay_p.h
+++ b/src/quicktemplates2/qquickoverlay_p.h
@@ -87,7 +87,9 @@ protected:
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
+#if QT_CONFIG(quicktemplates2_multitouch)
void touchEvent(QTouchEvent *event) override;
+#endif
#if QT_CONFIG(wheelevent)
void wheelEvent(QWheelEvent *event) override;
#endif
diff --git a/src/quicktemplates2/qquickoverlay_p_p.h b/src/quicktemplates2/qquickoverlay_p_p.h
index 38284332..05177a49 100644
--- a/src/quicktemplates2/qquickoverlay_p_p.h
+++ b/src/quicktemplates2/qquickoverlay_p_p.h
@@ -76,7 +76,9 @@ public:
bool handleRelease(QQuickItem *source, QEvent *event, QQuickPopup *target);
bool handleMouseEvent(QQuickItem *source, QMouseEvent *event, QQuickPopup *target = nullptr);
+#if QT_CONFIG(quicktemplates2_multitouch)
bool handleTouchEvent(QQuickItem *source, QTouchEvent *event, QQuickPopup *target = nullptr);
+#endif
void addPopup(QQuickPopup *popup);
void removePopup(QQuickPopup *popup);
diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp
index 840b9f19..9e0015fa 100644
--- a/src/quicktemplates2/qquickpopup.cpp
+++ b/src/quicktemplates2/qquickpopup.cpp
@@ -299,6 +299,7 @@ bool QQuickPopupPrivate::contains(const QPointF &scenePos) const
return popupItem->contains(popupItem->mapFromScene(scenePos));
}
+#if QT_CONFIG(quicktemplates2_multitouch)
bool QQuickPopupPrivate::acceptTouch(const QTouchEvent::TouchPoint &point)
{
if (point.id() == touchId)
@@ -311,6 +312,7 @@ bool QQuickPopupPrivate::acceptTouch(const QTouchEvent::TouchPoint &point)
return false;
}
+#endif
bool QQuickPopupPrivate::blockInput(QQuickItem *item, const QPointF &point) const
{
@@ -373,6 +375,7 @@ bool QQuickPopupPrivate::handleMouseEvent(QQuickItem *item, QMouseEvent *event)
}
}
+#if QT_CONFIG(quicktemplates2_multitouch)
bool QQuickPopupPrivate::handleTouchEvent(QQuickItem *item, QTouchEvent *event)
{
switch (event->type()) {
@@ -418,6 +421,7 @@ bool QQuickPopupPrivate::handleTouchEvent(QQuickItem *item, QTouchEvent *event)
return false;
}
+#endif
bool QQuickPopupPrivate::prepareEnterTransition()
{
@@ -566,13 +570,20 @@ void QQuickPopupPrivate::setWindow(QQuickWindow *newWindow)
QQuickOverlayPrivate::get(overlay)->removePopup(q);
}
+ window = newWindow;
+
if (newWindow) {
QQuickOverlay *overlay = QQuickOverlay::overlay(newWindow);
if (overlay)
QQuickOverlayPrivate::get(overlay)->addPopup(q);
+
+ QQuickControlPrivate *p = QQuickControlPrivate::get(popupItem);
+ p->resolveFont();
+ p->resolvePalette();
+ if (QQuickApplicationWindow *appWindow = qobject_cast<QQuickApplicationWindow *>(newWindow))
+ p->updateLocale(appWindow->locale(), false); // explicit=false
}
- window = newWindow;
emit q->windowChanged(newWindow);
if (complete && visible && window)
@@ -1440,12 +1451,6 @@ void QQuickPopup::setParentItem(QQuickItem *parent)
if (parent) {
QObjectPrivate::connect(parent, &QQuickItem::windowChanged, d, &QQuickPopupPrivate::setWindow);
QQuickItemPrivate::get(d->parentItem)->addItemChangeListener(d, QQuickItemPrivate::Destroyed);
-
- QQuickControlPrivate *p = QQuickControlPrivate::get(d->popupItem);
- p->resolveFont();
- p->resolvePalette();
- if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(parent->window()))
- p->updateLocale(window->locale(), false); // explicit=false
} else {
close();
}
@@ -2053,10 +2058,12 @@ bool QQuickPopup::overlayEvent(QQuickItem *item, QEvent *event)
event->accept();
return d->modal;
+#if QT_CONFIG(quicktemplates2_multitouch)
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
return d->handleTouchEvent(item, static_cast<QTouchEvent *>(event));
+#endif
case QEvent::MouseButtonPress:
case QEvent::MouseButtonRelease:
@@ -2067,6 +2074,7 @@ bool QQuickPopup::overlayEvent(QQuickItem *item, QEvent *event)
}
}
+#if QT_CONFIG(quicktemplates2_multitouch)
void QQuickPopup::touchEvent(QTouchEvent *event)
{
Q_D(QQuickPopup);
@@ -2078,6 +2086,7 @@ void QQuickPopup::touchUngrabEvent()
Q_D(QQuickPopup);
d->handleUngrab();
}
+#endif
#if QT_CONFIG(wheelevent)
void QQuickPopup::wheelEvent(QWheelEvent *event)
diff --git a/src/quicktemplates2/qquickpopup_p.h b/src/quicktemplates2/qquickpopup_p.h
index 065647d5..bf41e7d0 100644
--- a/src/quicktemplates2/qquickpopup_p.h
+++ b/src/quicktemplates2/qquickpopup_p.h
@@ -362,8 +362,10 @@ protected:
virtual void mouseDoubleClickEvent(QMouseEvent *event);
virtual void mouseUngrabEvent();
virtual bool overlayEvent(QQuickItem *item, QEvent *event);
+#if QT_CONFIG(quicktemplates2_multitouch)
virtual void touchEvent(QTouchEvent *event);
virtual void touchUngrabEvent();
+#endif
#if QT_CONFIG(wheelevent)
virtual void wheelEvent(QWheelEvent *event);
#endif
diff --git a/src/quicktemplates2/qquickpopup_p_p.h b/src/quicktemplates2/qquickpopup_p_p.h
index fa79003e..857bb6ae 100644
--- a/src/quicktemplates2/qquickpopup_p_p.h
+++ b/src/quicktemplates2/qquickpopup_p_p.h
@@ -99,7 +99,9 @@ public:
bool contains(const QPointF &scenePos) const;
+#if QT_CONFIG(quicktemplates2_multitouch)
virtual bool acceptTouch(const QTouchEvent::TouchPoint &point);
+#endif
virtual bool blockInput(QQuickItem *item, const QPointF &point) const;
virtual bool handlePress(QQuickItem* item, const QPointF &point, ulong timestamp);
@@ -108,7 +110,9 @@ public:
virtual void handleUngrab();
bool handleMouseEvent(QQuickItem *item, QMouseEvent *event);
+#if QT_CONFIG(quicktemplates2_multitouch)
bool handleTouchEvent(QQuickItem *item, QTouchEvent *event);
+#endif
virtual void reposition();
virtual void resizeOverlay();
diff --git a/src/quicktemplates2/qquickpopupitem.cpp b/src/quicktemplates2/qquickpopupitem.cpp
index 8251ad2f..27b800f0 100644
--- a/src/quicktemplates2/qquickpopupitem.cpp
+++ b/src/quicktemplates2/qquickpopupitem.cpp
@@ -89,6 +89,8 @@ void QQuickPopupItemPrivate::resolveFont()
{
if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(popup->window()))
inheritFont(window->font());
+ else
+ inheritFont(themeFont(QPlatformTheme::SystemFont));
}
void QQuickPopupItemPrivate::resolvePalette()
@@ -237,6 +239,7 @@ void QQuickPopupItem::mouseUngrabEvent()
d->popup->mouseUngrabEvent();
}
+#if QT_CONFIG(quicktemplates2_multitouch)
void QQuickPopupItem::touchEvent(QTouchEvent *event)
{
Q_D(QQuickPopupItem);
@@ -248,6 +251,7 @@ void QQuickPopupItem::touchUngrabEvent()
Q_D(QQuickPopupItem);
d->popup->touchUngrabEvent();
}
+#endif
#if QT_CONFIG(wheelevent)
void QQuickPopupItem::wheelEvent(QWheelEvent *event)
diff --git a/src/quicktemplates2/qquickpopupitem_p_p.h b/src/quicktemplates2/qquickpopupitem_p_p.h
index 00ccd78f..97f6415f 100644
--- a/src/quicktemplates2/qquickpopupitem_p_p.h
+++ b/src/quicktemplates2/qquickpopupitem_p_p.h
@@ -79,8 +79,10 @@ protected:
void mouseReleaseEvent(QMouseEvent *event) override;
void mouseDoubleClickEvent(QMouseEvent *event) override;
void mouseUngrabEvent() override;
+#if QT_CONFIG(quicktemplates2_multitouch)
void touchEvent(QTouchEvent *event) override;
void touchUngrabEvent() override;
+#endif
#if QT_CONFIG(wheelevent)
void wheelEvent(QWheelEvent *event) override;
#endif
diff --git a/src/quicktemplates2/qquickrangeslider.cpp b/src/quicktemplates2/qquickrangeslider.cpp
index 83317902..c1cf13db 100644
--- a/src/quicktemplates2/qquickrangeslider.cpp
+++ b/src/quicktemplates2/qquickrangeslider.cpp
@@ -328,7 +328,9 @@ public:
QQuickRangeSliderNode *pressedNode(int touchId = -1) const;
+#if QT_CONFIG(quicktemplates2_multitouch)
bool acceptTouch(const QTouchEvent::TouchPoint &point) override;
+#endif
void handlePress(const QPointF &point) override;
void handleMove(const QPointF &point) override;
void handleRelease(const QPointF &point) override;
@@ -397,6 +399,7 @@ QQuickRangeSliderNode *QQuickRangeSliderPrivate::pressedNode(int touchId) const
return nullptr;
}
+#if QT_CONFIG(quicktemplates2_multitouch)
bool QQuickRangeSliderPrivate::acceptTouch(const QTouchEvent::TouchPoint &point)
{
int firstId = QQuickRangeSliderNodePrivate::get(first)->touchId;
@@ -409,6 +412,7 @@ bool QQuickRangeSliderPrivate::acceptTouch(const QTouchEvent::TouchPoint &point)
return false;
}
+#endif
void QQuickRangeSliderPrivate::handlePress(const QPointF &point)
{
@@ -1018,6 +1022,7 @@ void QQuickRangeSlider::mouseMoveEvent(QMouseEvent *event)
QQuickControl::mouseMoveEvent(event);
}
+#if QT_CONFIG(quicktemplates2_multitouch)
void QQuickRangeSlider::touchEvent(QTouchEvent *event)
{
Q_D(QQuickRangeSlider);
@@ -1055,6 +1060,7 @@ void QQuickRangeSlider::touchEvent(QTouchEvent *event)
break;
}
}
+#endif
void QQuickRangeSlider::mirrorChange()
{
diff --git a/src/quicktemplates2/qquickrangeslider_p.h b/src/quicktemplates2/qquickrangeslider_p.h
index 3d4ebb2b..82d61b37 100644
--- a/src/quicktemplates2/qquickrangeslider_p.h
+++ b/src/quicktemplates2/qquickrangeslider_p.h
@@ -122,7 +122,9 @@ protected:
void keyReleaseEvent(QKeyEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
+#if QT_CONFIG(quicktemplates2_multitouch)
void touchEvent(QTouchEvent *event) override;
+#endif
void mirrorChange() override;
void componentComplete() override;
diff --git a/src/quicktemplates2/qquickslider.cpp b/src/quicktemplates2/qquickslider.cpp
index e54e95cd..b5bf5e52 100644
--- a/src/quicktemplates2/qquickslider.cpp
+++ b/src/quicktemplates2/qquickslider.cpp
@@ -665,6 +665,7 @@ void QQuickSlider::mouseMoveEvent(QMouseEvent *event)
QQuickControl::mouseMoveEvent(event);
}
+#if QT_CONFIG(quicktemplates2_multitouch)
void QQuickSlider::touchEvent(QTouchEvent *event)
{
Q_D(QQuickSlider);
@@ -702,6 +703,7 @@ void QQuickSlider::touchEvent(QTouchEvent *event)
break;
}
}
+#endif
#if QT_CONFIG(wheelevent)
void QQuickSlider::wheelEvent(QWheelEvent *event)
diff --git a/src/quicktemplates2/qquickslider_p.h b/src/quicktemplates2/qquickslider_p.h
index cb441ddd..21a880f5 100644
--- a/src/quicktemplates2/qquickslider_p.h
+++ b/src/quicktemplates2/qquickslider_p.h
@@ -139,7 +139,9 @@ protected:
void keyReleaseEvent(QKeyEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
+#if QT_CONFIG(quicktemplates2_multitouch)
void touchEvent(QTouchEvent *event) override;
+#endif
#if QT_CONFIG(wheelevent)
void wheelEvent(QWheelEvent *event) override;
#endif
diff --git a/src/quicktemplates2/qquickswitch.cpp b/src/quicktemplates2/qquickswitch.cpp
index ae447de8..da1f0408 100644
--- a/src/quicktemplates2/qquickswitch.cpp
+++ b/src/quicktemplates2/qquickswitch.cpp
@@ -187,6 +187,7 @@ void QQuickSwitch::mouseMoveEvent(QMouseEvent *event)
QQuickAbstractButton::mouseMoveEvent(event);
}
+#if QT_CONFIG(quicktemplates2_multitouch)
void QQuickSwitch::touchEvent(QTouchEvent *event)
{
Q_D(QQuickSwitch);
@@ -200,6 +201,7 @@ void QQuickSwitch::touchEvent(QTouchEvent *event)
}
QQuickAbstractButton::touchEvent(event);
}
+#endif
void QQuickSwitch::mirrorChange()
{
diff --git a/src/quicktemplates2/qquickswitch_p.h b/src/quicktemplates2/qquickswitch_p.h
index ebcfea53..0faaf114 100644
--- a/src/quicktemplates2/qquickswitch_p.h
+++ b/src/quicktemplates2/qquickswitch_p.h
@@ -74,7 +74,9 @@ Q_SIGNALS:
protected:
void mouseMoveEvent(QMouseEvent *event) override;
+#if QT_CONFIG(quicktemplates2_multitouch)
void touchEvent(QTouchEvent *event) override;
+#endif
void mirrorChange() override;
diff --git a/src/quicktemplates2/qquickswitchdelegate.cpp b/src/quicktemplates2/qquickswitchdelegate.cpp
index 9bce76db..d8ce8096 100644
--- a/src/quicktemplates2/qquickswitchdelegate.cpp
+++ b/src/quicktemplates2/qquickswitchdelegate.cpp
@@ -184,6 +184,7 @@ void QQuickSwitchDelegate::mouseMoveEvent(QMouseEvent *event)
QQuickItemDelegate::mouseMoveEvent(event);
}
+#if QT_CONFIG(quicktemplates2_multitouch)
void QQuickSwitchDelegate::touchEvent(QTouchEvent *event)
{
Q_D(QQuickSwitchDelegate);
@@ -197,6 +198,7 @@ void QQuickSwitchDelegate::touchEvent(QTouchEvent *event)
}
QQuickItemDelegate::touchEvent(event);
}
+#endif
QFont QQuickSwitchDelegate::defaultFont() const
{
diff --git a/src/quicktemplates2/qquickswitchdelegate_p.h b/src/quicktemplates2/qquickswitchdelegate_p.h
index e3e0804a..973ec21d 100644
--- a/src/quicktemplates2/qquickswitchdelegate_p.h
+++ b/src/quicktemplates2/qquickswitchdelegate_p.h
@@ -74,7 +74,9 @@ Q_SIGNALS:
protected:
void mouseMoveEvent(QMouseEvent *event) override;
+#if QT_CONFIG(quicktemplates2_multitouch)
void touchEvent(QTouchEvent *event) override;
+#endif
QFont defaultFont() const override;
void mirrorChange() override;
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index 6de92b4f..9295fc21 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -7,6 +7,7 @@ SUBDIRS += \
cursor \
drawer \
focus \
+ font \
menu \
palette \
platform \
@@ -27,7 +28,7 @@ SUBDIRS += \
# QTBUG-60268
boot2qt: SUBDIRS -= applicationwindow calendar controls cursor \
- drawer focus menu platform palette popup \
+ drawer focus font menu platform palette popup \
qquickmaterialstyle qquickmaterialstyleconf \
qquickuniversalstyle qquickuniversalstyleconf \
snippets
diff --git a/tests/auto/font/data/font-appwindow-custom.qml b/tests/auto/font/data/font-appwindow-custom.qml
new file mode 100644
index 00000000..3d06f64a
--- /dev/null
+++ b/tests/auto/font/data/font-appwindow-custom.qml
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+ApplicationWindow {
+ font.capitalization: Font.AllUppercase
+ font.family: "Courier"
+ font.italic: true
+ font.pixelSize: 60
+ font.strikeout: true
+ font.underline: true
+ font.weight: Font.DemiBold
+}
diff --git a/tests/auto/font/data/font-appwindow-default.qml b/tests/auto/font/data/font-appwindow-default.qml
new file mode 100644
index 00000000..02643c77
--- /dev/null
+++ b/tests/auto/font/data/font-appwindow-default.qml
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+ApplicationWindow {
+}
diff --git a/tests/auto/font/data/font-control-custom.qml b/tests/auto/font/data/font-control-custom.qml
new file mode 100644
index 00000000..92136e86
--- /dev/null
+++ b/tests/auto/font/data/font-control-custom.qml
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+Control {
+ font.capitalization: Font.AllUppercase
+ font.family: "Courier"
+ font.italic: true
+ font.pixelSize: 60
+ font.strikeout: true
+ font.underline: true
+ font.weight: Font.DemiBold
+}
diff --git a/tests/auto/font/data/font-control-default.qml b/tests/auto/font/data/font-control-default.qml
new file mode 100644
index 00000000..552c77d8
--- /dev/null
+++ b/tests/auto/font/data/font-control-default.qml
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+Control {
+}
diff --git a/tests/auto/font/data/font-popup-custom.qml b/tests/auto/font/data/font-popup-custom.qml
new file mode 100644
index 00000000..e8363a81
--- /dev/null
+++ b/tests/auto/font/data/font-popup-custom.qml
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+Popup {
+ font.capitalization: Font.AllUppercase
+ font.family: "Courier"
+ font.italic: true
+ font.pixelSize: 60
+ font.strikeout: true
+ font.underline: true
+ font.weight: Font.DemiBold
+}
diff --git a/tests/auto/font/data/font-popup-default.qml b/tests/auto/font/data/font-popup-default.qml
new file mode 100644
index 00000000..26c522c1
--- /dev/null
+++ b/tests/auto/font/data/font-popup-default.qml
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+Popup {
+}
diff --git a/tests/auto/font/data/inheritance-childcontrol.qml b/tests/auto/font/data/inheritance-childcontrol.qml
new file mode 100644
index 00000000..8a04dd52
--- /dev/null
+++ b/tests/auto/font/data/inheritance-childcontrol.qml
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+ApplicationWindow {
+ id: window
+
+ property alias control: control
+ property alias child: child
+ property alias grandChild: grandChild
+
+ Item {
+ Control {
+ id: control
+
+ Control {
+ id: child
+
+ Item {
+ Control {
+ id: grandChild
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/tests/auto/font/data/inheritance-childpopup.qml b/tests/auto/font/data/inheritance-childpopup.qml
new file mode 100644
index 00000000..ca5cdc82
--- /dev/null
+++ b/tests/auto/font/data/inheritance-childpopup.qml
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+ApplicationWindow {
+ id: window
+
+ property alias control: control
+ property alias child: child
+ property alias grandChild: grandChild
+
+ Item {
+ Popup {
+ id: control
+
+ Control {
+ id: child
+
+ Item {
+ Control {
+ id: grandChild
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/tests/auto/font/data/inheritance-control.qml b/tests/auto/font/data/inheritance-control.qml
new file mode 100644
index 00000000..ac9c940a
--- /dev/null
+++ b/tests/auto/font/data/inheritance-control.qml
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+ApplicationWindow {
+ id: window
+
+ property alias control: control
+ property alias child: child
+ property alias grandChild: grandChild
+
+ Control {
+ id: control
+
+ Control {
+ id: child
+
+ Item {
+ Control {
+ id: grandChild
+ }
+ }
+ }
+ }
+}
diff --git a/tests/auto/font/data/inheritance-dynamicchildcontrol.qml b/tests/auto/font/data/inheritance-dynamicchildcontrol.qml
new file mode 100644
index 00000000..98c0f696
--- /dev/null
+++ b/tests/auto/font/data/inheritance-dynamicchildcontrol.qml
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+ApplicationWindow {
+ id: window
+
+ property Control control
+ property Control child
+ property Control grandChild
+
+ Item {
+ id: childItem
+ }
+
+ Component {
+ id: component
+ Control { }
+ }
+
+ Component.onCompleted: {
+ control = component.createObject(childItem)
+ child = component.createObject(control)
+ grandChild = component.createObject(child)
+ }
+}
diff --git a/tests/auto/font/data/inheritance-dynamicchildpopup.qml b/tests/auto/font/data/inheritance-dynamicchildpopup.qml
new file mode 100644
index 00000000..ef4fe60c
--- /dev/null
+++ b/tests/auto/font/data/inheritance-dynamicchildpopup.qml
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+ApplicationWindow {
+ id: window
+
+ property Popup control
+ property Control child
+ property Control grandChild
+
+ Item {
+ id: childItem
+ }
+
+ Component {
+ id: popupComponent
+ Popup { }
+ }
+
+ Component {
+ id: controlComponent
+ Control { }
+ }
+
+ Component.onCompleted: {
+ control = popupComponent.createObject(childItem)
+ child = controlComponent.createObject(control.contentItem)
+ grandChild = controlComponent.createObject(child)
+ }
+}
diff --git a/tests/auto/font/data/inheritance-dynamiccontrol.qml b/tests/auto/font/data/inheritance-dynamiccontrol.qml
new file mode 100644
index 00000000..a261d600
--- /dev/null
+++ b/tests/auto/font/data/inheritance-dynamiccontrol.qml
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+ApplicationWindow {
+ id: window
+
+ property Control control
+ property Control child
+ property Control grandChild
+
+ Component {
+ id: component
+ Control { }
+ }
+
+ Component.onCompleted: {
+ control = component.createObject(contentItem)
+ child = component.createObject(control)
+ grandChild = component.createObject(child)
+ }
+}
diff --git a/tests/auto/font/data/inheritance-dynamicpopup.qml b/tests/auto/font/data/inheritance-dynamicpopup.qml
new file mode 100644
index 00000000..f0d567da
--- /dev/null
+++ b/tests/auto/font/data/inheritance-dynamicpopup.qml
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+ApplicationWindow {
+ id: window
+
+ property Popup control
+ property Control child
+ property Control grandChild
+
+ Component {
+ id: popupComponent
+ Popup { }
+ }
+
+ Component {
+ id: controlComponent
+ Control { }
+ }
+
+ Component.onCompleted: {
+ control = popupComponent.createObject(window)
+ child = controlComponent.createObject(control.contentItem)
+ grandChild = controlComponent.createObject(child)
+ }
+}
diff --git a/tests/auto/font/data/inheritance-popup.qml b/tests/auto/font/data/inheritance-popup.qml
new file mode 100644
index 00000000..b8415e63
--- /dev/null
+++ b/tests/auto/font/data/inheritance-popup.qml
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+ApplicationWindow {
+ id: window
+
+ property alias control: control
+ property alias child: child
+ property alias grandChild: grandChild
+
+ Popup {
+ id: control
+
+ Control {
+ id: child
+
+ Item {
+ Control {
+ id: grandChild
+ }
+ }
+ }
+ }
+}
diff --git a/tests/auto/font/font.pro b/tests/auto/font/font.pro
new file mode 100644
index 00000000..f6ccefd3
--- /dev/null
+++ b/tests/auto/font/font.pro
@@ -0,0 +1,14 @@
+CONFIG += testcase
+TARGET = tst_font
+SOURCES += tst_font.cpp
+
+macos:CONFIG -= app_bundle
+
+QT += core-private gui-private qml-private quick-private testlib quicktemplates2-private quickcontrols2-private
+
+include (../shared/util.pri)
+
+TESTDATA = data/*
+
+OTHER_FILES += \
+ data/*.qml
diff --git a/tests/auto/font/tst_font.cpp b/tests/auto/font/tst_font.cpp
new file mode 100644
index 00000000..6f04a8c0
--- /dev/null
+++ b/tests/auto/font/tst_font.cpp
@@ -0,0 +1,289 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/qtest.h>
+#include "../shared/visualtestutil.h"
+
+#include <QtGui/qfont.h>
+#include <QtGui/qpa/qplatformtheme.h>
+#include <QtGui/private/qguiapplication_p.h>
+#include <QtQml/qqmlengine.h>
+#include <QtQml/qqmlcomponent.h>
+#include <QtQuickTemplates2/private/qquickapplicationwindow_p.h>
+#include <QtQuickTemplates2/private/qquickcontrol_p.h>
+#include <QtQuickTemplates2/private/qquickpopup_p.h>
+#include <QtQuickControls2/private/qquickproxytheme_p.h>
+
+using namespace QQuickVisualTestUtil;
+
+class tst_font : public QQmlDataTest
+{
+ Q_OBJECT
+
+private slots:
+ void font_data();
+ void font();
+
+ void inheritance_data();
+ void inheritance();
+
+ void defaultFont_data();
+ void defaultFont();
+};
+
+void tst_font::font_data()
+{
+ QTest::addColumn<QString>("testFile");
+ QTest::addColumn<QFont>("expectedFont");
+
+ QTest::newRow("Control") << "font-control-default.qml" << QFont();
+ QTest::newRow("AppWindow") << "font-appwindow-default.qml" << QFont();
+ QTest::newRow("Popup") << "font-popup-default.qml" << QFont();
+
+ QFont customFont;
+ customFont.setCapitalization(QFont::AllUppercase);
+ customFont.setFamily("Courier");
+ customFont.setItalic(true);
+ customFont.setPixelSize(60);
+ customFont.setStrikeOut(true);
+ customFont.setUnderline(true);
+ customFont.setWeight(QFont::DemiBold);
+
+ QTest::newRow("Control:custom") << "font-control-custom.qml" << customFont;
+ QTest::newRow("AppWindow:custom") << "font-appwindow-custom.qml" << customFont;
+ QTest::newRow("Popup:custom") << "font-popup-custom.qml" << customFont;
+}
+
+void tst_font::font()
+{
+ QFETCH(QString, testFile);
+ QFETCH(QFont, expectedFont);
+
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+ component.loadUrl(testFileUrl(testFile));
+
+ QScopedPointer<QObject> object(component.create());
+ QVERIFY2(!object.isNull(), qPrintable(component.errorString()));
+
+ QVariant var = object->property("font");
+ QVERIFY(var.isValid());
+
+ QFont actualFont = var.value<QFont>();
+ QCOMPARE(actualFont, expectedFont);
+}
+
+void tst_font::inheritance_data()
+{
+ QTest::addColumn<QString>("testFile");
+
+ QTest::newRow("Control") << "inheritance-control.qml";
+ QTest::newRow("Child Control") << "inheritance-childcontrol.qml";
+ QTest::newRow("Dynamic Control") << "inheritance-dynamiccontrol.qml";
+ QTest::newRow("Dynamic Child Control") << "inheritance-dynamicchildcontrol.qml";
+
+ QTest::newRow("Popup") << "inheritance-popup.qml";
+ QTest::newRow("Child Popup") << "inheritance-childpopup.qml";
+ QTest::newRow("Dynamic Popup") << "inheritance-dynamicpopup.qml";
+ QTest::newRow("Dynamic Child Popup") << "inheritance-dynamicchildpopup.qml";
+}
+
+void tst_font::inheritance()
+{
+ QFETCH(QString, testFile);
+
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+ component.loadUrl(testFileUrl(testFile));
+
+ QScopedPointer<QQuickApplicationWindow> window(qobject_cast<QQuickApplicationWindow *>(component.create()));
+ QVERIFY2(!window.isNull(), qPrintable(component.errorString()));
+
+ QObject *control = window->property("control").value<QObject *>();
+ QObject *child = window->property("child").value<QObject *>();
+ QObject *grandChild = window->property("grandChild").value<QObject *>();
+ QVERIFY(control && child && grandChild);
+
+ QCOMPARE(window->font(), QFont());
+
+ QCOMPARE(control->property("font").value<QFont>(), QFont());
+ QCOMPARE(child->property("font").value<QFont>(), QFont());
+ QCOMPARE(grandChild->property("font").value<QFont>(), QFont());
+
+ QFont childFont;
+ childFont.setFamily("Arial");
+ childFont.setPixelSize(80);
+ childFont.setItalic(true);
+ child->setProperty("font", childFont);
+ QCOMPARE(child->property("font").value<QFont>(), childFont);
+ QCOMPARE(grandChild->property("font").value<QFont>(), childFont);
+
+ QFont grandChildFont(childFont);
+ grandChildFont.setFamily("Times New Roman");
+ grandChildFont.setUnderline(true);
+ grandChild->setProperty("font", grandChildFont);
+ QCOMPARE(child->property("font").value<QFont>(), childFont);
+ QCOMPARE(grandChild->property("font").value<QFont>(), grandChildFont);
+
+ QFont windowFont;
+ windowFont.setWeight(QFont::Thin);
+ window->setFont(windowFont);
+ QCOMPARE(window->font(), windowFont);
+ QCOMPARE(control->property("font").value<QFont>(), windowFont);
+
+ childFont.setWeight(QFont::Thin);
+ QCOMPARE(child->property("font").value<QFont>(), childFont);
+
+ grandChildFont.setWeight(QFont::Thin);
+ QCOMPARE(grandChild->property("font").value<QFont>(), grandChildFont);
+
+ child->setProperty("font", QVariant());
+ QCOMPARE(child->property("font").value<QFont>(), windowFont);
+ QCOMPARE(grandChild->property("font").value<QFont>(), grandChildFont);
+
+ grandChild->setProperty("font", QVariant());
+ QCOMPARE(grandChild->property("font").value<QFont>(), windowFont);
+}
+
+class TestFontTheme : public QQuickProxyTheme
+{
+public:
+ TestFontTheme(QPlatformTheme *theme) : QQuickProxyTheme(theme)
+ {
+ std::fill(fonts, fonts + QPlatformTheme::NFonts, static_cast<QFont *>(0));
+
+ for (int i = QPlatformTheme::SystemFont; i < QPlatformTheme::NFonts; ++i) {
+ QFont font = QFont();
+ font.setPixelSize(i + 10);
+ fonts[i] = new QFont(font);
+ }
+
+ QGuiApplicationPrivate::platform_theme = this;
+ }
+
+ const QFont *font(Font type = SystemFont) const override
+ {
+ return fonts[type];
+ }
+
+private:
+ QFont *fonts[QPlatformTheme::NFonts];
+};
+
+Q_DECLARE_METATYPE(QPlatformTheme::Font)
+
+void tst_font::defaultFont_data()
+{
+ QTest::addColumn<QString>("control");
+ QTest::addColumn<QPlatformTheme::Font>("fontType");
+
+ QTest::newRow("AbstractButton") << "AbstractButton" << QPlatformTheme::SystemFont;
+ QTest::newRow("ApplicationWindow") << "ApplicationWindow" << QPlatformTheme::SystemFont;
+ QTest::newRow("Button") << "Button" << QPlatformTheme::PushButtonFont;
+ QTest::newRow("CheckBox") << "CheckBox" << QPlatformTheme::CheckBoxFont;
+ QTest::newRow("CheckDelegate") << "CheckDelegate" << QPlatformTheme::ListViewFont;
+ QTest::newRow("ComboBox") << "ComboBox" << QPlatformTheme::ComboMenuItemFont;
+ QTest::newRow("Container") << "Container" << QPlatformTheme::SystemFont;
+ QTest::newRow("Control") << "Control" << QPlatformTheme::SystemFont;
+ QTest::newRow("Dial") << "Dial" << QPlatformTheme::SystemFont;
+ QTest::newRow("Dialog") << "Dialog" << QPlatformTheme::SystemFont;
+ QTest::newRow("DialogButtonBox") << "DialogButtonBox" << QPlatformTheme::SystemFont;
+ QTest::newRow("Drawer") << "Drawer" << QPlatformTheme::SystemFont;
+ QTest::newRow("Frame") << "Frame" << QPlatformTheme::SystemFont;
+ QTest::newRow("GroupBox") << "GroupBox" << QPlatformTheme::GroupBoxTitleFont;
+ QTest::newRow("ItemDelegate") << "ItemDelegate" << QPlatformTheme::ItemViewFont;
+ QTest::newRow("Label") << "Label" << QPlatformTheme::LabelFont;
+ QTest::newRow("Menu") << "Menu" << QPlatformTheme::MenuFont;
+ QTest::newRow("MenuItem") << "MenuItem" << QPlatformTheme::MenuItemFont;
+ QTest::newRow("MenuSeparator") << "MenuSeparator" << QPlatformTheme::SystemFont;
+ QTest::newRow("Page") << "Page" << QPlatformTheme::SystemFont;
+ QTest::newRow("Pane") << "Pane" << QPlatformTheme::SystemFont;
+ QTest::newRow("Popup") << "Popup" << QPlatformTheme::SystemFont;
+ QTest::newRow("ProgressBar") << "ProgressBar" << QPlatformTheme::SystemFont;
+ QTest::newRow("RadioButton") << "RadioButton" << QPlatformTheme::RadioButtonFont;
+ QTest::newRow("RadioDelegate") << "RadioDelegate" << QPlatformTheme::ListViewFont;
+ QTest::newRow("RangeSlider") << "RangeSlider" << QPlatformTheme::SystemFont;
+ QTest::newRow("RoundButton") << "RoundButton" << QPlatformTheme::PushButtonFont;
+ QTest::newRow("ScrollBar") << "ScrollBar" << QPlatformTheme::SystemFont;
+ QTest::newRow("ScrollIndicator") << "ScrollIndicator" << QPlatformTheme::SystemFont;
+ QTest::newRow("Slider") << "Slider" << QPlatformTheme::SystemFont;
+ QTest::newRow("SpinBox") << "SpinBox" << QPlatformTheme::EditorFont;
+ QTest::newRow("SwipeDelegate") << "SwipeDelegate" << QPlatformTheme::ListViewFont;
+ QTest::newRow("Switch") << "Switch" << QPlatformTheme::SystemFont; // ### TODO: add QPlatformTheme::SwitchFont
+ QTest::newRow("SwitchDelegate") << "SwitchDelegate" << QPlatformTheme::ListViewFont;
+ QTest::newRow("TabBar") << "TabBar" << QPlatformTheme::SystemFont;
+ QTest::newRow("TabButton") << "TabButton" << QPlatformTheme::TabButtonFont;
+ QTest::newRow("TextArea") << "TextArea" << QPlatformTheme::EditorFont;
+ QTest::newRow("TextField") << "TextField" << QPlatformTheme::EditorFont;
+ QTest::newRow("ToolBar") << "ToolBar" << QPlatformTheme::SystemFont;
+ QTest::newRow("ToolButton") << "ToolButton" << QPlatformTheme::ToolButtonFont;
+ QTest::newRow("ToolSeparator") << "ToolSeparator" << QPlatformTheme::SystemFont;
+ QTest::newRow("ToolTip") << "ToolTip" << QPlatformTheme::TipLabelFont;
+ QTest::newRow("Tumbler") << "Tumbler" << QPlatformTheme::SystemFont;
+}
+
+void tst_font::defaultFont()
+{
+ QFETCH(QString, control);
+ QFETCH(QPlatformTheme::Font, fontType);
+
+ TestFontTheme theme(QGuiApplicationPrivate::platform_theme);
+
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+ component.setData(QString("import QtQuick.Controls 2.2; %1 { }").arg(control).toUtf8(), QUrl());
+
+ QScopedPointer<QObject> object(component.create());
+ QVERIFY2(!object.isNull(), qPrintable(component.errorString()));
+
+ QVariant var = object->property("font");
+ QVERIFY(var.isValid());
+
+ const QFont *expectedFont = theme.font(fontType);
+ QVERIFY(expectedFont);
+
+ QFont actualFont = var.value<QFont>();
+
+ if (actualFont != *expectedFont) {
+ qDebug() << QTest::currentDataTag() << actualFont << *expectedFont;
+ }
+
+ QCOMPARE(actualFont, *expectedFont);
+}
+
+QTEST_MAIN(tst_font)
+
+#include "tst_font.moc"
diff --git a/tests/auto/qquickstyle/data/DummyStyle/Button.qml b/tests/auto/qquickstyle/data/DummyStyle/Button.qml
new file mode 100644
index 00000000..5b08222c
--- /dev/null
+++ b/tests/auto/qquickstyle/data/DummyStyle/Button.qml
@@ -0,0 +1,2 @@
+import QtQuick.Templates 2.0 as T
+T.Button { }
diff --git a/tests/auto/qquickstyle/data/designer/ButtonSpecifics.qml b/tests/auto/qquickstyle/data/designer/ButtonSpecifics.qml
new file mode 100644
index 00000000..9faaa8b7
--- /dev/null
+++ b/tests/auto/qquickstyle/data/designer/ButtonSpecifics.qml
@@ -0,0 +1,3 @@
+import HelperWidgets 2.0
+
+ButtonSection { }
diff --git a/tests/auto/qquickstyle/data/dummy.dSYM/empty b/tests/auto/qquickstyle/data/dummy.dSYM/empty
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/auto/qquickstyle/data/dummy.dSYM/empty
diff --git a/tests/auto/qquickstyle/qquickstyle.pro b/tests/auto/qquickstyle/qquickstyle.pro
index 10ca8500..e56ee854 100644
--- a/tests/auto/qquickstyle/qquickstyle.pro
+++ b/tests/auto/qquickstyle/qquickstyle.pro
@@ -6,3 +6,5 @@ macos:CONFIG -= app_bundle
QT += quickcontrols2 testlib
QT_PRIVATE += core-private gui-private quickcontrols2-private
+
+TESTDATA = $$PWD/data/*
diff --git a/tests/auto/qquickstyle/tst_qquickstyle.cpp b/tests/auto/qquickstyle/tst_qquickstyle.cpp
index 3487a21e..1ce2a034 100644
--- a/tests/auto/qquickstyle/tst_qquickstyle.cpp
+++ b/tests/auto/qquickstyle/tst_qquickstyle.cpp
@@ -97,9 +97,22 @@ void tst_QQuickStyle::environmentVariables()
void tst_QQuickStyle::availableStyles()
{
- QStringList styles = QQuickStyle::availableStyles();
+ QString path = QFINDTESTDATA("data");
+ QVERIFY(!path.isEmpty());
+ qputenv("QT_QUICK_CONTROLS_STYLE_PATH", path.toLocal8Bit());
+
+ QStringList paths = QQuickStylePrivate::stylePaths();
+ QVERIFY(paths.contains(path));
+
+ const QStringList styles = QQuickStyle::availableStyles();
QVERIFY(!styles.isEmpty());
QCOMPARE(styles.first(), QString("Default"));
+ QVERIFY(!styles.contains("designer"));
+
+ // QTBUG-60973
+ for (const QString &style : styles) {
+ QVERIFY2(!style.endsWith(".dSYM"), qPrintable(style));
+ }
}
QTEST_MAIN(tst_QQuickStyle)