From 4f5da1ed1dc1d294c1c79b9f6124cedeaa45c4b6 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Wed, 3 Jul 2019 11:57:09 +0200 Subject: Doc: Replace example file lists with links to code.qt.io Task-number: QTBUG-74391 Change-Id: I354049c5c8edb36cb94afa4483ae177a736f2374 Reviewed-by: Paul Wicking --- src/imports/calendar/doc/qtlabscalendar.qdocconf | 1 + src/imports/controls/doc/qtquickcontrols.qdocconf | 1 + src/imports/platform/doc/qtlabsplatform.qdocconf | 1 + 3 files changed, 3 insertions(+) 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/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 -- cgit v1.2.3 From 83813e43405109478769010acf2caf85a4229501 Mon Sep 17 00:00:00 2001 From: Wang Chuan Date: Sat, 29 Jun 2019 23:51:06 +0800 Subject: QQuickComboBox: emit countChanged signal when model is updated [ChangeLog][QtQuick][QQuickComboBox] countChanged signal now will be emitted when a new model is set to the ComboBox Fixes: QTBUG-75972 Change-Id: Ic26718453ba06ba284ac5903fc6f55ddf3523331 Reviewed-by: Mitch Curtis --- src/quicktemplates2/qquickcombobox.cpp | 1 + tests/auto/qquickpopup/data/countChanged.qml | 80 ++++++++++++++++++++++++++++ tests/auto/qquickpopup/tst_qquickpopup.cpp | 16 ++++++ 3 files changed, 97 insertions(+) create mode 100644 tests/auto/qquickpopup/data/countChanged.qml diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp index 78ec7ef8..0fa6298f 100644 --- a/src/quicktemplates2/qquickcombobox.cpp +++ b/src/quicktemplates2/qquickcombobox.cpp @@ -828,6 +828,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/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(); + 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" -- cgit v1.2.3 From c3e52db481fb48f456b8cee86a5a789093ef9546 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 10 Jul 2019 21:24:47 +0200 Subject: Mark the module free of Java-stye iterators and QLinkedList Change-Id: I1e76b546c54b1fe58b4094bcb96a3692c2242d2e Reviewed-by: Volker Hilsheimer --- .qmake.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.qmake.conf b/.qmake.conf index e9510576..0e68ba10 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 -- cgit v1.2.3 From 05a98e4db8a91447159eabb6ebc68c40cb7f6cf7 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 10 Jul 2019 21:26:08 +0200 Subject: Fix compilation with explicit QChar(*int*) ctors The QChar ctors from integral non-char types are under consideration for adding explicit. Fix users of these ctors ahead of the change. Change-Id: I2d8f5276fe448ac2a3b3332e1b3773556ef9c676 Reviewed-by: Volker Hilsheimer --- src/quickcontrols2/qquickmnemoniclabel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); -- cgit v1.2.3 From 045527ed8a9dbe68240d26cd024e93d3112017d4 Mon Sep 17 00:00:00 2001 From: Vitaly Fanaskov Date: Thu, 18 Jul 2019 10:51:31 +0200 Subject: Remove redundant code Reasons: 1) Qt::TexturePattern has never set by any code (this branch is unreachable); 2) There is no knowleage about any brushes in QML (this method is supposed to be invoked from QML only). Palette is used for colors only; 3) Even if brush style has been set somehow, it will be erased during palettes resolving process after assigning a new "window color". Looks like this code was copied from widgets styling and has been compiling only because of the current design. In light of redesigning palette class this code also makes no sense. Bringing knowledge about brushes and its styles to QML requires additional job. Change-Id: I555d062335593ad945b024136750dcd548cd9f16 Reviewed-by: Mitch Curtis Reviewed-by: Nils Jeisecke --- src/imports/controls/fusion/qquickfusionstyle.cpp | 4 ---- 1 file changed, 4 deletions(-) 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); } -- cgit v1.2.3 From 1d06eb3f8215b67c5061ee3a076df405724ff7ee Mon Sep 17 00:00:00 2001 From: Dimitrios Apostolou Date: Thu, 18 Jul 2019 19:02:40 +0200 Subject: Fix Flaky tests These tests where failing sometimes in our CI, because centerOnScreen() was invoked which asks the window manager to move the window, but does not wait for the event's completion. The solution is to do all that *before* the initial qWaitForWindowActive(). Fixes: QTBUG-73128 Change-Id: I06c1f85d5ff9657dccab50f29084f7624cd7e194 Reviewed-by: Volker Hilsheimer Reviewed-by: Shawn Rutledge --- tests/auto/qquickmenu/tst_qquickmenu.cpp | 40 +++++++++++++------------- tests/auto/qquickmenubar/tst_qquickmenubar.cpp | 6 ++-- 2 files changed, 23 insertions(+), 23 deletions(-) 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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 window(qobject_cast(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(); QVERIFY(menuBar); @@ -224,10 +224,10 @@ void tst_qquickmenubar::keys() QScopedPointer window(qobject_cast(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(); QVERIFY(menuBar); @@ -412,10 +412,10 @@ void tst_qquickmenubar::mnemonics() QScopedPointer window(qobject_cast(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(); QVERIFY(menuBar); -- cgit v1.2.3 From da06da57002b64cf4bcde0ca708b3275a5f919ae Mon Sep 17 00:00:00 2001 From: Wang Chuan Date: Wed, 17 Jul 2019 17:41:16 +0800 Subject: QQuickTextArea: prevent changing size of background recursively When the x/y position of background depends on the height/width of background and these values are not constant, the if statement in the method resizeBackground() will always pass. And since a change listener is set before calling setHeight()/setWidth() in background, these two method will always call resizeBackground() and then call themself recursively, that means the height/width of background will always be reset, no matter what value you set. [ChangeLog][QtQuick][QQuickTextArea] defer adding change listener and prevent changing size of background recursively in construction Fixes: QTBUG-76369 Change-Id: I2ec37cad7f35cb1c756276326fe69e860c6b8de5 Reviewed-by: Mitch Curtis --- src/quicktemplates2/qquicktextarea.cpp | 10 +++++-- .../auto/qquickmaterialstyle/data/tst_material.qml | 35 ++++++++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) 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) + } } -- cgit v1.2.3 From 25531b3d91311c1362b11f3465109b809809d2e4 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Fri, 3 May 2019 12:06:27 +0200 Subject: Enable Material style with RHI Change-Id: I9100d20b76b9cc6ac138f474e5d808db19ed6684 Reviewed-by: Mitch Curtis --- .../qtquickcontrols2materialstyleplugin.qrc | 1 + .../material/shaders/+qsb/RectangularGlow.frag | Bin 0 -> 2321 bytes .../material/shaders/RectangularGlow_rhi.frag | 28 +++++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 src/imports/controls/material/shaders/+qsb/RectangularGlow.frag create mode 100644 src/imports/controls/material/shaders/RectangularGlow_rhi.frag 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 @@ shaders/RectangularGlow.frag shaders/+glslcore/RectangularGlow.frag shaders/+hlsl/RectangularGlow.frag + shaders/+qsb/RectangularGlow.frag diff --git a/src/imports/controls/material/shaders/+qsb/RectangularGlow.frag b/src/imports/controls/material/shaders/+qsb/RectangularGlow.frag new file mode 100644 index 00000000..a805b134 Binary files /dev/null and b/src/imports/controls/material/shaders/+qsb/RectangularGlow.frag differ 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; +} -- cgit v1.2.3