aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/imports/calendar/calendar.pro2
-rw-r--r--src/imports/controls/ApplicationWindow.qml2
-rw-r--r--src/imports/controls/RangeSlider.qml2
-rw-r--r--src/imports/controls/controls.pri2
-rw-r--r--src/imports/controls/controls.pro2
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-default.qdoc2
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-index.qdoc18
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc2
-rw-r--r--src/imports/controls/material/ApplicationWindow.qml2
-rw-r--r--src/imports/controls/universal/ApplicationWindow.qml1
-rw-r--r--src/imports/templates/qtquicktemplates2plugin.cpp2
-rw-r--r--src/quicktemplates2/qquickcontrol.cpp39
-rw-r--r--src/quicktemplates2/qquickcontrol_p_p.h1
-rw-r--r--src/quicktemplates2/qquickscrollview.cpp14
-rw-r--r--tests/auto/revisions/tst_revisions.cpp31
-rw-r--r--tests/auto/snippets/tst_snippets.cpp18
-rw-r--r--tests/benchmarks/objectcount/tst_objectcount.cpp86
17 files changed, 130 insertions, 96 deletions
diff --git a/src/imports/calendar/calendar.pro b/src/imports/calendar/calendar.pro
index 981860b5..039906c1 100644
--- a/src/imports/calendar/calendar.pro
+++ b/src/imports/calendar/calendar.pro
@@ -17,5 +17,7 @@ SOURCES += \
include(calendar.pri)
+!static: CONFIG += qmlcache
+
CONFIG += no_cxx_module
load(qml_plugin)
diff --git a/src/imports/controls/ApplicationWindow.qml b/src/imports/controls/ApplicationWindow.qml
index 9a81812f..6698fcb3 100644
--- a/src/imports/controls/ApplicationWindow.qml
+++ b/src/imports/controls/ApplicationWindow.qml
@@ -35,9 +35,9 @@
****************************************************************************/
import QtQuick 2.9
+import QtQuick.Window 2.3
import QtQuick.Controls 2.3
import QtQuick.Controls.impl 2.3
-import QtQuick.Window 2.2
import QtQuick.Templates 2.3 as T
T.ApplicationWindow {
diff --git a/src/imports/controls/RangeSlider.qml b/src/imports/controls/RangeSlider.qml
index 75c27d91..3a3c2202 100644
--- a/src/imports/controls/RangeSlider.qml
+++ b/src/imports/controls/RangeSlider.qml
@@ -75,7 +75,7 @@ T.RangeSlider {
border.width: activeFocus ? 2 : 1
border.color: control.enabled ? (activeFocus
? Default.focusColor
- : (control.first.pressed ? Default.indicatorFramePressedColor : Default.indicatorFrameColor)) : Default.indicatorFrameDisabledColor
+ : (control.second.pressed ? Default.indicatorFramePressedColor : Default.indicatorFrameColor)) : Default.indicatorFrameDisabledColor
color: control.enabled ? (second.pressed
? (activeFocus ? Default.focusPressedColor : Default.indicatorPressedColor)
: (activeFocus ? Default.focusLightColor : Default.backgroundColor)) : Default.indicatorDisabledColor
diff --git a/src/imports/controls/controls.pri b/src/imports/controls/controls.pri
index 5b0f3000..7d23e7ae 100644
--- a/src/imports/controls/controls.pri
+++ b/src/imports/controls/controls.pri
@@ -2,7 +2,7 @@ HEADERS += \
$$PWD/qquickdefaultbusyindicator_p.h \
$$PWD/qquickdefaultdial_p.h \
$$PWD/qquickdefaultprogressbar_p.h \
- $$PWD/qquickdefaultstyle_p.h \
+ $$PWD/qquickdefaultstyle_p.h
SOURCES += \
$$PWD/qquickdefaultbusyindicator.cpp \
diff --git a/src/imports/controls/controls.pro b/src/imports/controls/controls.pro
index 145b468c..b75e4f56 100644
--- a/src/imports/controls/controls.pro
+++ b/src/imports/controls/controls.pro
@@ -26,6 +26,8 @@ qtquickcompiler {
qmlfiles.prefix = /qt-project.org/imports/QtQuick/Controls.2
qmlfiles.files += $$QML_CONTROLS
RESOURCES += qmlfiles
+} else:!static {
+ CONFIG += qmlcache
}
CONFIG += no_cxx_module
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-default.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-default.qdoc
index acff6859..ad85b9ec 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-default.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-default.qdoc
@@ -31,7 +31,7 @@
The Default style is a basic all-round style.
- The Default style a simple and light-weight style that offers the maximum
+ The Default style is a simple and light-weight style that offers the maximum
performance for Qt Quick Controls 2. It is built with a minimal amount of Qt
Quick primitives, and keeps animations and transitions to the minimum.
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
index 66a377bd..703c5d33 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
@@ -133,18 +133,18 @@
\li ...
\endtable
- \section1 Important Concepts in Qt Quick Controls 2
+ \section1 Topics
\list
- \li \l{Qt Quick Controls 2 Guidelines}
- \li \l{Styling Qt Quick Controls 2}
- \li \l{Customizing Qt Quick Controls 2}
- \li \l{High-DPI Support in Qt Quick Controls 2}
- \li \l{Using File Selectors with Qt Quick Controls 2}
+ \li \l{Qt Quick Controls 2 Guidelines}{Guidelines}
+ \li \l{Styling Qt Quick Controls 2}{Styling}
+ \li \l{Customizing Qt Quick Controls 2}{Customization}
+ \li \l{High-DPI Support in Qt Quick Controls 2}{High-DPI Support}
+ \li \l{Using File Selectors with Qt Quick Controls 2}{Using File Selectors}
+ \li \l{Deploying Qt Quick Controls 2 Applications}{Deployment}
+ \li \l{Qt Quick Controls 2 Configuration File}{Configuration File}
+ \li \l{Supported Environment Variables in Qt Quick Controls 2}{Environment Variables}
\li \l{Differences between Qt Quick Controls}
- \li \l{Deploying Qt Quick Controls 2 Applications}
- \li \l{Qt Quick Controls 2 Configuration File}
- \li \l{Supported Environment Variables in Qt Quick Controls 2}
\endlist
\section1 Reference
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc
index 9f942634..42d8bc62 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc
@@ -138,7 +138,7 @@
\li \l {Default Style}
\li \l {Material Style}
\li \l {Universal Style}
- \li \l{Using File Selectors with Qt Quick Controls 2}
+ \li \l {Using File Selectors with Qt Quick Controls 2}
\li \l {Deploying Qt Quick Controls 2 Applications}
\li \l {Qt Quick Controls 2 Configuration File}
\li \l {Supported Environment Variables in Qt Quick Controls 2}
diff --git a/src/imports/controls/material/ApplicationWindow.qml b/src/imports/controls/material/ApplicationWindow.qml
index 14dd4637..45f1b59a 100644
--- a/src/imports/controls/material/ApplicationWindow.qml
+++ b/src/imports/controls/material/ApplicationWindow.qml
@@ -35,7 +35,7 @@
****************************************************************************/
import QtQuick 2.9
-import QtQuick.Window 2.2
+import QtQuick.Window 2.3
import QtQuick.Templates 2.3 as T
import QtQuick.Controls.Material 2.3
diff --git a/src/imports/controls/universal/ApplicationWindow.qml b/src/imports/controls/universal/ApplicationWindow.qml
index e359b1bf..c9bd4cec 100644
--- a/src/imports/controls/universal/ApplicationWindow.qml
+++ b/src/imports/controls/universal/ApplicationWindow.qml
@@ -35,6 +35,7 @@
****************************************************************************/
import QtQuick 2.9
+import QtQuick.Window 2.3
import QtQuick.Templates 2.3 as T
import QtQuick.Controls.Universal 2.3
import QtQuick.Controls.Universal.impl 2.3
diff --git a/src/imports/templates/qtquicktemplates2plugin.cpp b/src/imports/templates/qtquicktemplates2plugin.cpp
index e9f21378..9f74a012 100644
--- a/src/imports/templates/qtquicktemplates2plugin.cpp
+++ b/src/imports/templates/qtquicktemplates2plugin.cpp
@@ -216,6 +216,7 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri)
qmlRegisterRevision<QQuickTextInput, 7>(uri, 2, 0);
qmlRegisterRevision<QQuickTextEdit, 7>(uri, 2, 0);
qmlRegisterRevision<QQuickWindow, 2>(uri, 2, 0);
+ qmlRegisterRevision<QWindow, 3>(uri, 2, 0);
// QtQuick.Templates 2.1 (new types and revisions in Qt 5.8)
qmlRegisterType<QQuickButtonGroup, 1>(uri, 2, 1, "ButtonGroup");
@@ -263,6 +264,7 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri)
// make revisioned properties available to their subclasses (synced with Qt 5.9)
qmlRegisterRevision<QQuickText, 9>(uri, 2, 2);
qmlRegisterRevision<QQuickTextInput, 9>(uri, 2, 2);
+ qmlRegisterRevision<QQuickWindowQmlImpl, 2>(uri, 2, 2);
// QtQuick.Templates 2.3 (new types and revisions in Qt 5.10)
qmlRegisterType<QQuickAbstractButton, 3>(uri, 2, 3, "AbstractButton");
diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp
index fc0b1b17..d285fdd2 100644
--- a/src/quicktemplates2/qquickcontrol.cpp
+++ b/src/quicktemplates2/qquickcontrol.cpp
@@ -281,6 +281,27 @@ QQuickItem *QQuickControlPrivate::getContentItem()
return contentItem;
}
+void QQuickControlPrivate::setContentItem_helper(QQuickItem *item, bool notify)
+{
+ Q_Q(QQuickControl);
+ if (contentItem == item)
+ return;
+
+ q->contentItemChange(item, contentItem);
+ destroyDelegate(contentItem, q);
+ contentItem = item;
+
+ if (item) {
+ if (!item->parentItem())
+ item->setParentItem(q);
+ if (componentComplete)
+ resizeContent();
+ }
+
+ if (notify)
+ emit q->contentItemChanged();
+}
+
#if QT_CONFIG(accessibility)
void QQuickControlPrivate::accessibilityActiveChanged(bool active)
{
@@ -1176,25 +1197,15 @@ void QQuickControl::setBackground(QQuickItem *background)
QQuickItem *QQuickControl::contentItem() const
{
QQuickControlPrivate *d = const_cast<QQuickControlPrivate *>(d_func());
- return d->getContentItem();
+ if (!d->contentItem)
+ d->setContentItem_helper(d->getContentItem(), false);
+ return d->contentItem;
}
void QQuickControl::setContentItem(QQuickItem *item)
{
Q_D(QQuickControl);
- if (d->contentItem == item)
- return;
-
- contentItemChange(item, d->contentItem);
- QQuickControlPrivate::destroyDelegate(d->contentItem, this);
- d->contentItem = item;
- if (item) {
- if (!item->parentItem())
- item->setParentItem(this);
- if (isComponentComplete())
- d->resizeContent();
- }
- emit contentItemChanged();
+ d->setContentItem_helper(item, true);
}
void QQuickControl::classBegin()
diff --git a/src/quicktemplates2/qquickcontrol_p_p.h b/src/quicktemplates2/qquickcontrol_p_p.h
index 3cd04b17..7ff9dff3 100644
--- a/src/quicktemplates2/qquickcontrol_p_p.h
+++ b/src/quicktemplates2/qquickcontrol_p_p.h
@@ -95,6 +95,7 @@ public:
virtual void resizeContent();
virtual QQuickItem *getContentItem();
+ void setContentItem_helper(QQuickItem *item, bool notify = true);
#if QT_CONFIG(accessibility)
void accessibilityActiveChanged(bool active) override;
diff --git a/src/quicktemplates2/qquickscrollview.cpp b/src/quicktemplates2/qquickscrollview.cpp
index fc763511..c05e4848 100644
--- a/src/quicktemplates2/qquickscrollview.cpp
+++ b/src/quicktemplates2/qquickscrollview.cpp
@@ -108,7 +108,7 @@ public:
QQuickItem *getContentItem() override;
- QQuickFlickable *ensureFlickable();
+ QQuickFlickable *ensureFlickable(bool content);
bool setFlickable(QQuickFlickable *flickable, bool content);
void updateContentWidth();
@@ -146,14 +146,14 @@ QQuickScrollViewPrivate::QQuickScrollViewPrivate()
QQuickItem *QQuickScrollViewPrivate::getContentItem()
{
- return ensureFlickable();
+ return ensureFlickable(false);
}
-QQuickFlickable *QQuickScrollViewPrivate::ensureFlickable()
+QQuickFlickable *QQuickScrollViewPrivate::ensureFlickable(bool content)
{
Q_Q(QQuickScrollView);
if (!flickable)
- setFlickable(new QQuickFlickable(q), true);
+ setFlickable(new QQuickFlickable(q), content);
return flickable;
}
@@ -271,7 +271,7 @@ void QQuickScrollViewPrivate::contentData_append(QQmlListProperty<QObject> *prop
if (!p->flickable && p->setFlickable(qobject_cast<QQuickFlickable *>(obj), true))
return;
- QQuickFlickable *flickable = p->ensureFlickable();
+ QQuickFlickable *flickable = p->ensureFlickable(true);
Q_ASSERT(flickable);
QQmlListProperty<QObject> data = flickable->flickableData();
data.append(&data, obj);
@@ -313,7 +313,7 @@ void QQuickScrollViewPrivate::contentChildren_append(QQmlListProperty<QQuickItem
if (!p->flickable)
p->setFlickable(qobject_cast<QQuickFlickable *>(item), true);
- QQuickFlickable *flickable = p->ensureFlickable();
+ QQuickFlickable *flickable = p->ensureFlickable(true);
Q_ASSERT(flickable);
QQmlListProperty<QQuickItem> children = flickable->flickableChildren();
children.append(&children, item);
@@ -552,7 +552,7 @@ void QQuickScrollView::componentComplete()
Q_D(QQuickScrollView);
QQuickControl::componentComplete();
if (!d->contentItem)
- d->ensureFlickable();
+ d->ensureFlickable(true);
}
void QQuickScrollView::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)
diff --git a/tests/auto/revisions/tst_revisions.cpp b/tests/auto/revisions/tst_revisions.cpp
index 8a7a5d6e..606cea33 100644
--- a/tests/auto/revisions/tst_revisions.cpp
+++ b/tests/auto/revisions/tst_revisions.cpp
@@ -46,6 +46,9 @@ class tst_revisions : public QObject
private slots:
void revisions_data();
void revisions();
+
+ void window_data();
+ void window();
};
void tst_revisions::revisions_data()
@@ -77,6 +80,34 @@ void tst_revisions::revisions()
QVERIFY2(!object.isNull(), qPrintable(component.errorString()));
}
+void tst_revisions::window_data()
+{
+ QTest::addColumn<int>("revision");
+ QTest::addColumn<QString>("qml");
+ QTest::addColumn<QString>("error");
+
+ // Qt 5.7: 2.0, Qt 5.8: 2.1
+ for (int i = 0; i <= 1; ++i)
+ QTest::newRow(qPrintable(QString("screen:2.%1").arg(i))) << i << "screen: null" << QString(":1 \"ApplicationWindow.screen\" is not available in QtQuick.Templates 2.%1").arg(i);
+
+ // Qt 5.9: 2.2, Qt 5.10: 2.3...
+ for (int i = 2; i <= QT_VERSION_MINOR - 7; ++i)
+ QTest::newRow(qPrintable(QString("screen:2.%1").arg(i))) << i << "screen: null" << "";
+}
+
+void tst_revisions::window()
+{
+ QFETCH(int, revision);
+ QFETCH(QString, qml);
+ QFETCH(QString, error);
+
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+ component.setData(QString("import QtQuick.Templates 2.%1; ApplicationWindow { %2 }").arg(revision).arg(qml).toUtf8(), QUrl());
+ QScopedPointer<QObject> window(component.create());
+ QCOMPARE(window.isNull(), !error.isEmpty());
+}
+
QTEST_MAIN(tst_revisions)
#include "tst_revisions.moc"
diff --git a/tests/auto/snippets/tst_snippets.cpp b/tests/auto/snippets/tst_snippets.cpp
index 1185bde9..852c98e9 100644
--- a/tests/auto/snippets/tst_snippets.cpp
+++ b/tests/auto/snippets/tst_snippets.cpp
@@ -113,11 +113,23 @@ void tst_Snippets::verify()
if (takeScreenshots) {
const QString currentDataTag = QLatin1String(QTest::currentDataTag());
- static const QString currentStyle = QQuickStyle::name();
+ static const QString applicationStyle = QQuickStyle::name().isEmpty() ? "Default" : QQuickStyle::name();
static const QStringList availableStyles = QQuickStyle::availableStyles();
+
+ bool isStyledSnippet = false;
+ const QString snippetStyle = currentDataTag.section("-", 1, 1);
for (const QString &availableStyle : availableStyles) {
- if (currentStyle != availableStyle && currentDataTag.startsWith("qtquickcontrols2-" + availableStyle.toLower() + "-"))
- QSKIP(qPrintable(QString("Not running with the %1 style").arg(availableStyle)));
+ if (!snippetStyle.compare(availableStyle, Qt::CaseInsensitive)) {
+ if (applicationStyle != availableStyle)
+ QSKIP(qPrintable(QString("%1 style specific snippet. Running with the %2 style.").arg(availableStyle, applicationStyle)));
+ isStyledSnippet = true;
+ }
+ }
+
+ if (!isStyledSnippet && !applicationStyle.isEmpty()) {
+ int index = output.indexOf("-", output.lastIndexOf("/"));
+ if (index != -1)
+ output.insert(index, "-" + applicationStyle.toLower());
}
QQuickWindow *window = qobject_cast<QQuickWindow *>(root);
diff --git a/tests/benchmarks/objectcount/tst_objectcount.cpp b/tests/benchmarks/objectcount/tst_objectcount.cpp
index 7f0610ac..d12f3293 100644
--- a/tests/benchmarks/objectcount/tst_objectcount.cpp
+++ b/tests/benchmarks/objectcount/tst_objectcount.cpp
@@ -61,17 +61,11 @@ private slots:
void init();
void cleanup();
- void calendar();
- void calendar_data();
+ void qobjects();
+ void qobjects_data();
- void controls();
- void controls_data();
-
- void material();
- void material_data();
-
- void universal();
- void universal_data();
+ void qquickitems();
+ void qquickitems_data();
private:
QQmlEngine engine;
@@ -94,17 +88,6 @@ void tst_ObjectCount::cleanup()
qtHookData[QHooks::RemoveQObject] = 0;
}
-static void printItems(const QList<QQuickItem *> &items)
-{
- std::cout << "RESULT tst_ObjectCount::" << QTest::currentTestFunction() << "():\"" << QTest::currentDataTag() << "\":" << std::endl;
- std::cout << " QQuickItems: " << items.count() << " (total of QObjects: " << qt_qobjects->count() << ")" << std::endl;
-
- if (qt_verbose) {
- for (QObject *object : qAsConst(*qt_qobjects))
- qInfo() << "\t" << object;
- }
-}
-
static void addTestRows(QQmlEngine *engine, const QString &sourcePath, const QString &targetPath, const QStringList &skiplist = QStringList())
{
// We cannot use QQmlComponent to load QML files directly from the source tree.
@@ -138,6 +121,14 @@ static void addTestRows(QQmlEngine *engine, const QString &sourcePath, const QSt
}
}
+static void initTestRows(QQmlEngine *engine)
+{
+ addTestRows(engine, "controls", "QtQuick/Controls.2", QStringList() << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator");
+ addTestRows(engine, "controls/material", "QtQuick/Controls.2/Material", QStringList() << "Ripple" << "SliderHandle" << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator" << "BoxShadow" << "ElevationEffect" << "CursorDelegate");
+ addTestRows(engine, "controls/universal", "QtQuick/Controls.2/Universal", QStringList() << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator");
+}
+
+template <typename T>
static void doBenchmark(QQmlEngine *engine, const QUrl &url)
{
QQmlComponent component(engine);
@@ -148,61 +139,42 @@ static void doBenchmark(QQmlEngine *engine, const QUrl &url)
QScopedPointer<QObject> object(component.create());
QVERIFY2(object.data(), qPrintable(component.errorString()));
- QList<QQuickItem *> items;
- for (QObject *object : qAsConst(*qt_qobjects)) {
- QQuickItem *item = qobject_cast<QQuickItem *>(object);
- if (item)
- items += item;
+ QObjectList objects;
+ for (QObject *object : qAsConst(*qt_qobjects())) {
+ if (qobject_cast<T *>(object))
+ objects += object;
}
- printItems(items);
-}
-void tst_ObjectCount::calendar()
-{
- QFETCH(QUrl, url);
- doBenchmark(&engine, url);
-}
-
-void tst_ObjectCount::calendar_data()
-{
- QTest::addColumn<QUrl>("url");
- addTestRows(&engine, "calendar", "Qt/labs/calendar");
-}
-
-void tst_ObjectCount::controls()
-{
- QFETCH(QUrl, url);
- doBenchmark(&engine, url);
-}
+ if (qt_verbose) {
+ for (QObject *object : objects)
+ qInfo() << "\t" << object;
+ }
-void tst_ObjectCount::controls_data()
-{
- QTest::addColumn<QUrl>("url");
- addTestRows(&engine, "controls", "QtQuick/Controls.2", QStringList() << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator");
+ QTest::setBenchmarkResult(objects.count(), QTest::Events);
}
-void tst_ObjectCount::material()
+void tst_ObjectCount::qobjects()
{
QFETCH(QUrl, url);
- doBenchmark(&engine, url);
+ doBenchmark<QObject>(&engine, url);
}
-void tst_ObjectCount::material_data()
+void tst_ObjectCount::qobjects_data()
{
QTest::addColumn<QUrl>("url");
- addTestRows(&engine, "controls/material", "QtQuick/Controls.2/Material", QStringList() << "Ripple" << "SliderHandle" << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator" << "BoxShadow" << "ElevationEffect" << "CursorDelegate");
+ initTestRows(&engine);
}
-void tst_ObjectCount::universal()
+void tst_ObjectCount::qquickitems()
{
QFETCH(QUrl, url);
- doBenchmark(&engine, url);
+ doBenchmark<QQuickItem>(&engine, url);
}
-void tst_ObjectCount::universal_data()
+void tst_ObjectCount::qquickitems_data()
{
QTest::addColumn<QUrl>("url");
- addTestRows(&engine, "controls/universal", "QtQuick/Controls.2/Universal", QStringList() << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator");
+ initTestRows(&engine);
}
QTEST_MAIN(tst_ObjectCount)