diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2019-08-11 10:34:42 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2019-08-11 10:34:42 +0200 |
commit | c472c2d1128962e12d0528ae6f9fa43cc6a7f147 (patch) | |
tree | 353b270ed4e60be6cf3881bdb396dd8038d02870 | |
parent | 82b64b8bec92212b90ee0987511179e14e1da071 (diff) | |
parent | 92c827a2a4b7e56dcb6865fa35fba25b5d2eb87f (diff) |
Merge remote-tracking branch 'origin/dev' into wip/qt6
Change-Id: I7c03e9e5227899188d4e16467f692419dc9e9c5b
-rw-r--r-- | .qmake.conf | 3 | ||||
-rw-r--r-- | src/imports/calendar/doc/qtlabscalendar.qdocconf | 1 | ||||
-rw-r--r-- | src/imports/controls/doc/qtquickcontrols.qdocconf | 1 | ||||
-rw-r--r-- | src/imports/controls/fusion/qquickfusionstyle.cpp | 4 | ||||
-rw-r--r-- | src/imports/controls/material/qtquickcontrols2materialstyleplugin.qrc | 1 | ||||
-rw-r--r-- | src/imports/controls/material/shaders/+qsb/RectangularGlow.frag | bin | 0 -> 2321 bytes | |||
-rw-r--r-- | src/imports/controls/material/shaders/RectangularGlow_rhi.frag | 28 | ||||
-rw-r--r-- | src/imports/platform/doc/qtlabsplatform.qdocconf | 1 | ||||
-rw-r--r-- | src/quickcontrols2/qquickmnemoniclabel.cpp | 2 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcombobox.cpp | 1 | ||||
-rw-r--r-- | src/quicktemplates2/qquicktextarea.cpp | 10 | ||||
-rw-r--r-- | tests/auto/qquickmaterialstyle/data/tst_material.qml | 35 | ||||
-rw-r--r-- | tests/auto/qquickmenu/tst_qquickmenu.cpp | 40 | ||||
-rw-r--r-- | tests/auto/qquickmenubar/tst_qquickmenubar.cpp | 6 | ||||
-rw-r--r-- | tests/auto/qquickpopup/data/countChanged.qml | 80 | ||||
-rw-r--r-- | tests/auto/qquickpopup/tst_qquickpopup.cpp | 16 |
16 files changed, 197 insertions, 32 deletions
diff --git a/.qmake.conf b/.qmake.conf index 1e82351b..f8fe8390 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -1,6 +1,7 @@ load(qt_build_config) CONFIG += warning_clean -DEFINES += QT_NO_FOREACH + +DEFINES += QT_NO_FOREACH QT_NO_JAVA_STYLE_ITERATORS QT_NO_LINKED_LIST QQC2_SOURCE_TREE = $$PWD diff --git a/src/imports/calendar/doc/qtlabscalendar.qdocconf b/src/imports/calendar/doc/qtlabscalendar.qdocconf index 899dce21..9a88cb25 100644 --- a/src/imports/calendar/doc/qtlabscalendar.qdocconf +++ b/src/imports/calendar/doc/qtlabscalendar.qdocconf @@ -1,4 +1,5 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) +include($QT_INSTALL_DOCS/config/exampleurl-qtquickcontrols2.qdocconf) project = QtLabsCalendar description = Qt Labs Calendar Reference Documentation diff --git a/src/imports/controls/doc/qtquickcontrols.qdocconf b/src/imports/controls/doc/qtquickcontrols.qdocconf index fd921562..3efe5799 100644 --- a/src/imports/controls/doc/qtquickcontrols.qdocconf +++ b/src/imports/controls/doc/qtquickcontrols.qdocconf @@ -1,4 +1,5 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) +include($QT_INSTALL_DOCS/config/exampleurl-qtquickcontrols2.qdocconf) include(manifest-meta.qdocconf) moduleheader = QtQuickControls2 diff --git a/src/imports/controls/fusion/qquickfusionstyle.cpp b/src/imports/controls/fusion/qquickfusionstyle.cpp index 7797463a..364f8a75 100644 --- a/src/imports/controls/fusion/qquickfusionstyle.cpp +++ b/src/imports/controls/fusion/qquickfusionstyle.cpp @@ -80,8 +80,6 @@ QColor QQuickFusionStyle::highlightedText(const QPalette &palette) QColor QQuickFusionStyle::outline(const QPalette &palette) { - if (palette.window().style() == Qt::TexturePattern) - return QColor(0, 0, 0, 160); return palette.window().color().darker(140); } @@ -95,8 +93,6 @@ QColor QQuickFusionStyle::highlightedOutline(const QPalette &palette) QColor QQuickFusionStyle::tabFrameColor(const QPalette &palette) { - if (palette.window().style() == Qt::TexturePattern) - return QColor(255, 255, 255, 8); return buttonColor(palette).lighter(104); } diff --git a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.qrc b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.qrc index 6e29aea4..71f9563b 100644 --- a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.qrc +++ b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.qrc @@ -15,5 +15,6 @@ <file>shaders/RectangularGlow.frag</file> <file>shaders/+glslcore/RectangularGlow.frag</file> <file>shaders/+hlsl/RectangularGlow.frag</file> + <file>shaders/+qsb/RectangularGlow.frag</file> </qresource> </RCC> diff --git a/src/imports/controls/material/shaders/+qsb/RectangularGlow.frag b/src/imports/controls/material/shaders/+qsb/RectangularGlow.frag Binary files differnew file mode 100644 index 00000000..a805b134 --- /dev/null +++ b/src/imports/controls/material/shaders/+qsb/RectangularGlow.frag diff --git a/src/imports/controls/material/shaders/RectangularGlow_rhi.frag b/src/imports/controls/material/shaders/RectangularGlow_rhi.frag new file mode 100644 index 00000000..3e7d2dfe --- /dev/null +++ b/src/imports/controls/material/shaders/RectangularGlow_rhi.frag @@ -0,0 +1,28 @@ +#version 440 + +layout(location = 0) in vec2 qt_TexCoord0; +layout(location = 0) out vec4 fragColor; + +layout(std140, binding = 0) uniform buf { + mat4 qt_Matrix; + float qt_Opacity; + float relativeSizeX; + float relativeSizeY; + float spread; + vec4 color; +} ubuf; + +float linearstep(float e0, float e1, float x) +{ + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); +} + +void main() +{ + float alpha = + smoothstep(0.0, ubuf.relativeSizeX, 0.5 - abs(0.5 - qt_TexCoord0.x)) * + smoothstep(0.0, ubuf.relativeSizeY, 0.5 - abs(0.5 - qt_TexCoord0.y)); + + float spreadMultiplier = linearstep(ubuf.spread, 1.0 - ubuf.spread, alpha); + fragColor = ubuf.color * ubuf.qt_Opacity * spreadMultiplier * spreadMultiplier; +} diff --git a/src/imports/platform/doc/qtlabsplatform.qdocconf b/src/imports/platform/doc/qtlabsplatform.qdocconf index c4a217ab..ae1a63f1 100644 --- a/src/imports/platform/doc/qtlabsplatform.qdocconf +++ b/src/imports/platform/doc/qtlabsplatform.qdocconf @@ -1,4 +1,5 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) +include($QT_INSTALL_DOCS/config/exampleurl-qtquickcontrols2.qdocconf) project = QtLabsPlatform description = Qt Labs Platform Reference Documentation diff --git a/src/quickcontrols2/qquickmnemoniclabel.cpp b/src/quickcontrols2/qquickmnemoniclabel.cpp index a006f076..193365b5 100644 --- a/src/quickcontrols2/qquickmnemoniclabel.cpp +++ b/src/quickcontrols2/qquickmnemoniclabel.cpp @@ -88,7 +88,7 @@ static QTextLayout::FormatRange underlineRange(int start, int length = 1) // based on QPlatformTheme::removeMnemonics() void QQuickMnemonicLabel::updateMnemonic() { - QString text(m_fullText.size(), 0); + QString text(m_fullText.size(), QChar::Null); int idx = 0; int pos = 0; int len = m_fullText.length(); diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp index 7bcb60fb..71b4eaf1 100644 --- a/src/quicktemplates2/qquickcombobox.cpp +++ b/src/quicktemplates2/qquickcombobox.cpp @@ -840,6 +840,7 @@ void QQuickComboBox::setModel(const QVariant& m) d->model = model; d->createDelegateModel(); + emit countChanged(); if (isComponentComplete()) { setCurrentIndex(count() > 0 ? 0 : -1); d->updateCurrentText(); diff --git a/src/quicktemplates2/qquicktextarea.cpp b/src/quicktemplates2/qquicktextarea.cpp index 95dd9f93..95bf5bb1 100644 --- a/src/quicktemplates2/qquicktextarea.cpp +++ b/src/quicktemplates2/qquicktextarea.cpp @@ -512,8 +512,11 @@ void QQuickTextAreaPrivate::executeBackground(bool complete) if (!background || complete) quickBeginDeferred(q, backgroundName(), background); - if (complete) + if (complete) { quickCompleteDeferred(q, backgroundName(), background); + if (background) + QQuickControlPrivate::addImplicitSizeListener(background, this, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); + } } void QQuickTextAreaPrivate::itemImplicitWidthChanged(QQuickItem *item) @@ -633,9 +636,10 @@ void QQuickTextArea::setBackground(QQuickItem *background) d->extra.value().hasBackgroundWidth = p->widthValid; d->extra.value().hasBackgroundHeight = p->heightValid; } - if (isComponentComplete()) + if (isComponentComplete()) { d->resizeBackground(); - QQuickControlPrivate::addImplicitSizeListener(background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); + QQuickControlPrivate::addImplicitSizeListener(background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); + } } if (!qFuzzyCompare(oldImplicitBackgroundWidth, implicitBackgroundWidth())) diff --git a/tests/auto/qquickmaterialstyle/data/tst_material.qml b/tests/auto/qquickmaterialstyle/data/tst_material.qml index 9f2456b8..45bc0dab 100644 --- a/tests/auto/qquickmaterialstyle/data/tst_material.qml +++ b/tests/auto/qquickmaterialstyle/data/tst_material.qml @@ -715,4 +715,39 @@ TestCase { control.destroy() } + + Component { + id: testResizeBackground + Item { + width: 200 + height: 200 + property alias textArea: textArea + ScrollView { + anchors.fill: parent + ScrollBar.horizontal.policy: ScrollBar.AlwaysOff + TextArea { + id: textArea + wrapMode : TextEdit.WordWrap + readOnly: false + selectByMouse: true + focus: true + text: "test message" + } + } + } + } + + function test_resize_background() { + var control = testCase.createTemporaryObject(testResizeBackground, testCase) + compare(control.textArea.background.height, 1) + compare(control.textArea.background.width, control.width) + control.width = 400 + control.height = 400 + compare(control.textArea.background.height, 1) + compare(control.textArea.background.width, control.width) + control.width = 200 + control.height = 200 + compare(control.textArea.background.height, 1) + compare(control.textArea.background.width, control.width) + } } diff --git a/tests/auto/qquickmenu/tst_qquickmenu.cpp b/tests/auto/qquickmenu/tst_qquickmenu.cpp index f22ac972..2fe47477 100644 --- a/tests/auto/qquickmenu/tst_qquickmenu.cpp +++ b/tests/auto/qquickmenu/tst_qquickmenu.cpp @@ -151,10 +151,10 @@ void tst_QQuickMenu::mouse() QQuickApplicationHelper helper(this, QLatin1String("applicationwindow.qml")); QQuickApplicationWindow *window = helper.appWindow; - window->show(); - QVERIFY(QTest::qWaitForWindowActive(window)); centerOnScreen(window); moveMouseAway(window); + window->show(); + QVERIFY(QTest::qWaitForWindowActive(window)); QQuickMenu *menu = window->property("menu").value<QQuickMenu*>(); menu->open(); @@ -270,12 +270,12 @@ void tst_QQuickMenu::contextMenuKeyboard() QQuickApplicationHelper helper(this, QLatin1String("applicationwindow.qml")); QQuickApplicationWindow *window = helper.appWindow; + centerOnScreen(window); + moveMouseAway(window); window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); QVERIFY(QGuiApplication::focusWindow() == window); - centerOnScreen(window); - moveMouseAway(window); QQuickMenu *menu = window->property("menu").value<QQuickMenu*>(); QCOMPARE(menu->currentIndex(), -1); @@ -453,12 +453,12 @@ void tst_QQuickMenu::disabledMenuItemKeyNavigation() QQuickApplicationHelper helper(this, QLatin1String("disabledMenuItemKeyNavigation.qml")); QQuickApplicationWindow *window = helper.appWindow; + centerOnScreen(window); + moveMouseAway(window); window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); QVERIFY(QGuiApplication::focusWindow() == window); - centerOnScreen(window); - moveMouseAway(window); QQuickMenu *menu = window->property("menu").value<QQuickMenu*>(); QCOMPARE(menu->currentIndex(), -1); @@ -610,10 +610,10 @@ void tst_QQuickMenu::menuSeparator() { QQuickApplicationHelper helper(this, QLatin1String("menuSeparator.qml")); QQuickWindow *window = helper.window; - window->show(); - QVERIFY(QTest::qWaitForWindowActive(window)); centerOnScreen(window); moveMouseAway(window); + window->show(); + QVERIFY(QTest::qWaitForWindowActive(window)); QQuickMenu *menu = window->property("menu").value<QQuickMenu*>(); QVERIFY(menu); @@ -752,10 +752,10 @@ void tst_QQuickMenu::popup() { QQuickApplicationHelper helper(this, QLatin1String("popup.qml")); QQuickApplicationWindow *window = helper.appWindow; - window->show(); - QVERIFY(QTest::qWaitForWindowActive(window)); centerOnScreen(window); moveMouseAway(window); + window->show(); + QVERIFY(QTest::qWaitForWindowActive(window)); QQuickMenu *menu = window->property("menu").value<QQuickMenu *>(); QVERIFY(menu); @@ -1039,10 +1039,10 @@ void tst_QQuickMenu::subMenuMouse() QQuickApplicationHelper helper(this, QLatin1String("subMenus.qml")); QQuickApplicationWindow *window = helper.appWindow; - window->show(); - QVERIFY(QTest::qWaitForWindowActive(window)); centerOnScreen(window); moveMouseAway(window); + window->show(); + QVERIFY(QTest::qWaitForWindowActive(window)); QQuickMenu *mainMenu = window->property("mainMenu").value<QQuickMenu *>(); QVERIFY(mainMenu); @@ -1145,10 +1145,10 @@ void tst_QQuickMenu::subMenuDisabledMouse() QQuickApplicationHelper helper(this, QLatin1String("subMenuDisabled.qml")); QQuickApplicationWindow *window = helper.appWindow; - window->show(); - QVERIFY(QTest::qWaitForWindowActive(window)); centerOnScreen(window); moveMouseAway(window); + window->show(); + QVERIFY(QTest::qWaitForWindowActive(window)); QQuickMenu *mainMenu = window->property("mainMenu").value<QQuickMenu *>(); QVERIFY(mainMenu); @@ -1207,10 +1207,10 @@ void tst_QQuickMenu::subMenuKeyboard() QQuickApplicationHelper helper(this, QLatin1String("subMenus.qml")); QQuickApplicationWindow *window = helper.appWindow; - window->show(); - QVERIFY(QTest::qWaitForWindowActive(window)); centerOnScreen(window); moveMouseAway(window); + window->show(); + QVERIFY(QTest::qWaitForWindowActive(window)); if (mirrored) window->setLocale(QLocale("ar_EG")); @@ -1329,10 +1329,10 @@ void tst_QQuickMenu::subMenuDisabledKeyboard() QQuickApplicationHelper helper(this, QLatin1String("subMenuDisabled.qml")); QQuickApplicationWindow *window = helper.appWindow; - window->show(); - QVERIFY(QTest::qWaitForWindowActive(window)); centerOnScreen(window); moveMouseAway(window); + window->show(); + QVERIFY(QTest::qWaitForWindowActive(window)); if (mirrored) window->setLocale(QLocale("ar_EG")); @@ -1417,10 +1417,10 @@ void tst_QQuickMenu::subMenuPosition() if (flip) window->setWidth(window->width() - mainMenu->width()); - window->show(); - QVERIFY(QTest::qWaitForWindowActive(window)); centerOnScreen(window); moveMouseAway(window); + window->show(); + QVERIFY(QTest::qWaitForWindowActive(window)); if (mirrored) window->setLocale(QLocale("ar_EG")); diff --git a/tests/auto/qquickmenubar/tst_qquickmenubar.cpp b/tests/auto/qquickmenubar/tst_qquickmenubar.cpp index 19d67eac..9a22d26f 100644 --- a/tests/auto/qquickmenubar/tst_qquickmenubar.cpp +++ b/tests/auto/qquickmenubar/tst_qquickmenubar.cpp @@ -85,10 +85,10 @@ void tst_qquickmenubar::mouse() QScopedPointer<QQuickApplicationWindow> window(qobject_cast<QQuickApplicationWindow *>(engine.rootObjects().value(0))); QVERIFY(window); - QVERIFY(QTest::qWaitForWindowActive(window.data())); centerOnScreen(window.data()); moveMouseAway(window.data()); + QVERIFY(QTest::qWaitForWindowActive(window.data())); QQuickMenuBar *menuBar = window->property("header").value<QQuickMenuBar *>(); QVERIFY(menuBar); @@ -224,10 +224,10 @@ void tst_qquickmenubar::keys() QScopedPointer<QQuickApplicationWindow> window(qobject_cast<QQuickApplicationWindow *>(engine.rootObjects().value(0))); QVERIFY(window); - QVERIFY(QTest::qWaitForWindowActive(window.data())); centerOnScreen(window.data()); moveMouseAway(window.data()); + QVERIFY(QTest::qWaitForWindowActive(window.data())); QQuickMenuBar *menuBar = window->property("header").value<QQuickMenuBar *>(); QVERIFY(menuBar); @@ -412,10 +412,10 @@ void tst_qquickmenubar::mnemonics() QScopedPointer<QQuickApplicationWindow> window(qobject_cast<QQuickApplicationWindow *>(engine.rootObjects().value(0))); QVERIFY(window); - QVERIFY(QTest::qWaitForWindowActive(window.data())); centerOnScreen(window.data()); moveMouseAway(window.data()); + QVERIFY(QTest::qWaitForWindowActive(window.data())); QQuickMenuBar *menuBar = window->property("header").value<QQuickMenuBar *>(); QVERIFY(menuBar); diff --git a/tests/auto/qquickpopup/data/countChanged.qml b/tests/auto/qquickpopup/data/countChanged.qml new file mode 100644 index 00000000..ee5876d7 --- /dev/null +++ b/tests/auto/qquickpopup/data/countChanged.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2019 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.12 +import QtQuick.Window 2.12 +import QtQuick.Controls 2.12 + +Window { + width: 640 + height: 480 + property bool isModel1: true + property alias comboBox: comboBox + property int count: comboBox.count + ListModel { + id: model1 + ListElement { + display: "one" + } + } + ListModel { + id: model2 + ListElement { + display: "one" + } + ListElement { + display: "two" + } + } + ComboBox { + id: comboBox + model: isModel1 ? model1 : model2 + } +} diff --git a/tests/auto/qquickpopup/tst_qquickpopup.cpp b/tests/auto/qquickpopup/tst_qquickpopup.cpp index 81b2d583..c2f876b8 100644 --- a/tests/auto/qquickpopup/tst_qquickpopup.cpp +++ b/tests/auto/qquickpopup/tst_qquickpopup.cpp @@ -88,6 +88,7 @@ private slots: void qquickview(); void disabledPalette(); void disabledParentPalette(); + void countChanged(); }; void tst_QQuickPopup::initTestCase() @@ -1171,6 +1172,21 @@ void tst_QQuickPopup::disabledParentPalette() QTRY_VERIFY(!popup->isVisible()); } +void tst_QQuickPopup::countChanged() +{ + QQuickApplicationHelper helper(this, "countChanged.qml"); + + QQuickWindow *window = helper.window; + window->show(); + QVERIFY(QTest::qWaitForWindowActive(window)); + + QQuickComboBox *comboBox = window->property("comboBox").value<QQuickComboBox*>(); + QVERIFY(comboBox); + QCOMPARE(window->property("count").toInt(), 1); + + QVERIFY(window->setProperty("isModel1", false)); + QTRY_COMPARE(window->property("count").toInt(), 2); +} QTEST_QUICKCONTROLS_MAIN(tst_QQuickPopup) #include "tst_qquickpopup.moc" |