diff options
29 files changed, 227 insertions, 53 deletions
diff --git a/.qmake.conf b/.qmake.conf index db2299f2..d6ee2340 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -2,4 +2,4 @@ load(qt_build_config) CONFIG += warning_clean android|ios|qnx|winrt|isEmpty(QT.widgets.name): CONFIG += no_desktop -MODULE_VERSION = 5.9.3 +MODULE_VERSION = 5.10.0 diff --git a/examples/quickcontrols/controls/tableview/src/sortfilterproxymodel.cpp b/examples/quickcontrols/controls/tableview/src/sortfilterproxymodel.cpp index 55f76d67..b93641a9 100644 --- a/examples/quickcontrols/controls/tableview/src/sortfilterproxymodel.cpp +++ b/examples/quickcontrols/controls/tableview/src/sortfilterproxymodel.cpp @@ -54,8 +54,8 @@ SortFilterProxyModel::SortFilterProxyModel(QObject *parent) : QSortFilterProxyModel(parent), m_complete(false) { - connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SIGNAL(countChanged())); - connect(this, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SIGNAL(countChanged())); + connect(this, &QSortFilterProxyModel::rowsInserted, this, &SortFilterProxyModel::countChanged); + connect(this, &QSortFilterProxyModel::rowsRemoved, this, &SortFilterProxyModel::countChanged); } int SortFilterProxyModel::count() const diff --git a/examples/quickcontrols/extras/dashboard/qml/TurnIndicator.qml b/examples/quickcontrols/extras/dashboard/qml/TurnIndicator.qml index b132510e..c0fb6720 100644 --- a/examples/quickcontrols/extras/dashboard/qml/TurnIndicator.qml +++ b/examples/quickcontrols/extras/dashboard/qml/TurnIndicator.qml @@ -59,7 +59,7 @@ Item { property bool flashing: false scale: direction === Qt.LeftArrow ? 1 : -1 - +//! [1] Timer { id: flashTimer interval: 500 @@ -67,7 +67,8 @@ Item { repeat: true onTriggered: flashing = !flashing } - +//! [1] +//! [2] function paintOutlinePath(ctx) { ctx.beginPath(); ctx.moveTo(0, height * 0.5); @@ -79,7 +80,7 @@ Item { ctx.lineTo(0.6 * width, height); ctx.lineTo(0, height * 0.5); } - +//! [2] Canvas { id: backgroundCanvas anchors.fill: parent @@ -95,7 +96,7 @@ Item { ctx.stroke(); } } - +//! [3] Canvas { id: foregroundCanvas anchors.fill: parent @@ -111,4 +112,5 @@ Item { ctx.fill(); } } +//! [3] } diff --git a/examples/quickcontrols/extras/dashboard/qml/ValueSource.qml b/examples/quickcontrols/extras/dashboard/qml/ValueSource.qml index 7225be48..44913621 100644 --- a/examples/quickcontrols/extras/dashboard/qml/ValueSource.qml +++ b/examples/quickcontrols/extras/dashboard/qml/ValueSource.qml @@ -49,7 +49,7 @@ ****************************************************************************/ import QtQuick 2.2 - +//! [0] Item { id: valueSource property real kph: 0 @@ -79,6 +79,7 @@ Item { property int turnSignal: gear == "P" && !start ? randomDirection() : -1 property real temperature: 0.6 property bool start: true +//! [0] function randomDirection() { return Math.random() > 0.5 ? Qt.LeftArrow : Qt.RightArrow; @@ -101,7 +102,7 @@ Item { SequentialAnimation { loops: Animation.Infinite - +//! [1] ParallelAnimation { NumberAnimation { target: valueSource @@ -120,6 +121,7 @@ Item { duration: 3000 } } +//! [1] ParallelAnimation { // We changed gears so we lost a bit of speed. NumberAnimation { diff --git a/src/controls/Calendar.qml b/src/controls/Calendar.qml index c5347c51..a5b32210 100644 --- a/src/controls/Calendar.qml +++ b/src/controls/Calendar.qml @@ -37,8 +37,8 @@ ** ****************************************************************************/ -import QtQuick 2.2 -import QtQuick.Controls 1.2 +import QtQuick 2.9 +import QtQuick.Controls 1.5 import QtQuick.Controls.Styles 1.1 import QtQuick.Controls.Private 1.0 @@ -202,20 +202,27 @@ Control { property int dayOfWeekFormat: Locale.ShortFormat /*! - The locale that this calendar should use to display itself. + \qmlproperty object Calendar::locale + \since QtQuick.Controls 1.6 - Affects how dates and day names are localized, as well as which - day is considered the first in a week. + This property controls the locale that this calendar uses to display + itself. - To set an Australian locale, for example: + The locale affects how dates and day names are localized, as well as + which day is considered the first in a week. + + The following example sets an Australian locale: \code locale: Qt.locale("en_AU") \endcode - The default locale is \c Qt.locale(). + The default value is equivalent to \c Qt.locale(). */ - property var __locale: Qt.locale() + property var locale: Qt.locale() + + // left for compatibility reasons; can be removed in next minor version/Qt 6 + property alias __locale: calendar.locale /*! \internal @@ -224,7 +231,7 @@ Control { populate the dates available to the user. */ property CalendarModel __model: CalendarModel { - locale: calendar.__locale + locale: calendar.locale // TODO: don't set the hour when QTBUG-56787 is fixed visibleDate: new Date(visibleYear, visibleMonth, 1, 12) diff --git a/src/controls/Slider.qml b/src/controls/Slider.qml index aa5fe07e..e290640e 100644 --- a/src/controls/Slider.qml +++ b/src/controls/Slider.qml @@ -171,6 +171,16 @@ Control { */ property bool tickmarksEnabled: false + /*! + \qmlproperty bool Slider::wheelEnabled + + This property determines whether the control handles wheel events. + The default value is \c true. + + \since QtQuick.Controls 1.6 + */ + property alias wheelEnabled: wheelarea.enabled + /*! \internal */ property bool __horizontal: orientation === Qt.Horizontal diff --git a/src/controls/Styles/Android/CalendarStyle.qml b/src/controls/Styles/Android/CalendarStyle.qml index 449cc497..52b02bff 100644 --- a/src/controls/Styles/Android/CalendarStyle.qml +++ b/src/controls/Styles/Android/CalendarStyle.qml @@ -83,7 +83,7 @@ CalendarStyle { LabelStyle { id: dayOfWeek anchors.centerIn: parent - text: control.__locale.dayName(styleData.dayOfWeek, control.dayOfWeekFormat) + text: control.locale.dayName(styleData.dayOfWeek, control.dayOfWeekFormat) focused: control.activeFocus window_focused: control.Window.active styleDef: AndroidStyle.styleDef.calendarViewStyle.CalendarView_weekDayTextAppearance diff --git a/src/controls/Styles/Android/qmldir b/src/controls/Styles/Android/qmldir index 21bff691..d07efdb6 100644 --- a/src/controls/Styles/Android/qmldir +++ b/src/controls/Styles/Android/qmldir @@ -2,3 +2,28 @@ module QtQuick.Controls.Styles.Android plugin qtquickcontrolsandroidstyleplugin classname QtQuickControlsAndroidStylePlugin singleton AndroidStyle 1.0 AndroidStyle.qml +internal ApplicationWindowStyle ApplicationWindowStyle.qml +internal BusyIndicatorStyle BusyIndicatorStyle.qml +internal ButtonStyle ButtonStyle.qml +internal CalendarStyle CalendarStyle.qml +internal CheckBoxStyle CheckBoxStyle.qml +internal ComboBoxStyle ComboBoxStyle.qml +internal CursorHandleStyle CursorHandleStyle.qml +internal FocusFrameStyle FocusFrameStyle.qml +internal GroupBoxStyle GroupBoxStyle.qml +internal LabelStyle LabelStyle.qml +internal MenuBarStyle MenuBarStyle.qml +internal MenuStyle MenuStyle.qml +internal ProgressBarStyle ProgressBarStyle.qml +internal RadioButtonStyle RadioButtonStyle.qml +internal ScrollViewStyle ScrollViewStyle.qml +internal SliderStyle SliderStyle.qml +internal SpinBoxStyle SpinBoxStyle.qml +internal StatusBarStyle StatusBarStyle.qml +internal SwitchStyle SwitchStyle.qml +internal TableViewStyle TableViewStyle.qml +internal TabViewStyle TabViewStyle.qml +internal TextAreaStyle TextAreaStyle.qml +internal TextFieldStyle TextFieldStyle.qml +internal ToolBarStyle ToolBarStyle.qml +internal ToolButtonStyle ToolButtonStyle.qml diff --git a/src/controls/Styles/Base/CalendarStyle.qml b/src/controls/Styles/Base/CalendarStyle.qml index 862c5f43..12cb3a4b 100644 --- a/src/controls/Styles/Base/CalendarStyle.qml +++ b/src/controls/Styles/Base/CalendarStyle.qml @@ -320,7 +320,7 @@ Style { color: gridVisible ? "#fcfcfc" : "transparent" implicitHeight: Math.round(TextSingleton.implicitHeight * 2.25) Label { - text: control.__locale.dayName(styleData.dayOfWeek, control.dayOfWeekFormat) + text: control.locale.dayName(styleData.dayOfWeek, control.dayOfWeekFormat) anchors.centerIn: parent } } @@ -397,8 +397,8 @@ Style { active: control.navigationBarVisible property QtObject styleData: QtObject { - readonly property string title: control.__locale.standaloneMonthName(control.visibleMonth) - + new Date(control.visibleYear, control.visibleMonth, 1).toLocaleDateString(control.__locale, " yyyy") + readonly property string title: control.locale.standaloneMonthName(control.visibleMonth) + + new Date(control.visibleYear, control.visibleMonth, 1).toLocaleDateString(control.locale, " yyyy") } } @@ -413,7 +413,7 @@ Style { Repeater { id: repeater model: CalendarHeaderModel { - locale: control.__locale + locale: control.locale } Loader { id: dayOfWeekDelegateLoader diff --git a/src/controls/plugin.cpp b/src/controls/plugin.cpp index 2590d892..f78098ec 100644 --- a/src/controls/plugin.cpp +++ b/src/controls/plugin.cpp @@ -121,7 +121,10 @@ static const struct { { "TreeView", 1, 4 }, { "TextArea", 1, 5 }, - { "TreeView", 1, 5 } + { "TreeView", 1, 5 }, + + { "Calendar", 1, 6 }, + { "Slider", 1, 6 } }; QtQuickControls1Plugin::QtQuickControls1Plugin(QObject *parent) : QQmlExtensionPlugin(parent) diff --git a/src/dialogs/dialogs.pro b/src/dialogs/dialogs.pro index ca5f408e..362f5584 100644 --- a/src/dialogs/dialogs.pro +++ b/src/dialogs/dialogs.pro @@ -3,7 +3,7 @@ requires(contains(QT_CONFIG, accessibility)) CXX_MODULE = qml TARGET = dialogplugin TARGETPATH = QtQuick/Dialogs -IMPORT_VERSION = 1.2 +IMPORT_VERSION = 1.3 QMAKE_DOCS = $$PWD/doc/qtquickdialogs.qdocconf diff --git a/src/dialogs/plugin.cpp b/src/dialogs/plugin.cpp index a2fb1099..2e861fa5 100644 --- a/src/dialogs/plugin.cpp +++ b/src/dialogs/plugin.cpp @@ -72,7 +72,7 @@ static void initResources() QT_BEGIN_NAMESPACE /*! - \qmlmodule QtQuick.Dialogs 1.2 + \qmlmodule QtQuick.Dialogs 1.3 \title Qt Quick Dialogs QML Types \ingroup qmlmodules \brief Provides QML types for standard file, color picker and message dialogs @@ -82,7 +82,7 @@ QT_BEGIN_NAMESPACE To use the types in this module, import the module with the following line: \code - import QtQuick.Dialogs 1.2 + import QtQuick.Dialogs 1.3 \endcode */ @@ -185,6 +185,7 @@ public: #endif qCDebug(lcRegistration) << " registering" << dialogQmlPath << "as Dialog"; qmlRegisterType(dialogQmlPath, uri, 1, 2, "Dialog"); + qmlRegisterType(dialogQmlPath, uri, 1, 3, "Dialog"); } } diff --git a/src/dialogs/qquickabstractfiledialog.cpp b/src/dialogs/qquickabstractfiledialog.cpp index 49d98a1a..b80bf86b 100644 --- a/src/dialogs/qquickabstractfiledialog.cpp +++ b/src/dialogs/qquickabstractfiledialog.cpp @@ -318,4 +318,12 @@ QJSValue QQuickAbstractFileDialog::__shortcuts() return m_shortcutDetails; } +void QQuickAbstractFileDialog::setDefaultSuffix(const QString &suffix) +{ + if (suffix == m_options->defaultSuffix()) + return; + m_options->setDefaultSuffix(suffix); + emit defaultSuffixChanged(); +} + QT_END_NAMESPACE diff --git a/src/dialogs/qquickabstractfiledialog_p.h b/src/dialogs/qquickabstractfiledialog_p.h index b4b7165d..cb7ac27e 100644 --- a/src/dialogs/qquickabstractfiledialog_p.h +++ b/src/dialogs/qquickabstractfiledialog_p.h @@ -74,6 +74,7 @@ class QQuickAbstractFileDialog : public QQuickAbstractDialog Q_PROPERTY(QUrl fileUrl READ fileUrl NOTIFY selectionAccepted) Q_PROPERTY(QList<QUrl> fileUrls READ fileUrls NOTIFY selectionAccepted) Q_PROPERTY(bool sidebarVisible READ sidebarVisible WRITE setSidebarVisible NOTIFY sidebarVisibleChanged) + Q_PROPERTY(QString defaultSuffix READ defaultSuffix WRITE setDefaultSuffix NOTIFY defaultSuffixChanged) Q_PROPERTY(QJSValue shortcuts READ shortcuts NOTIFY shortcutsChanged) // map of QStandardDirectory names to QUrls Q_PROPERTY(QJSValue __shortcuts READ __shortcuts NOTIFY shortcutsChanged) // map of details for QML dialog implementations @@ -95,6 +96,7 @@ public: bool sidebarVisible() const { return m_sidebarVisible; } QJSValue shortcuts(); QJSValue __shortcuts(); + QString defaultSuffix() const { return m_options->defaultSuffix(); } public Q_SLOTS: void setVisible(bool v); @@ -107,6 +109,7 @@ public Q_SLOTS: void selectNameFilter(const QString &f); void setSelectedNameFilterIndex(int idx); void setSidebarVisible(bool s); + void setDefaultSuffix(const QString &suffix); Q_SIGNALS: void folderChanged(); @@ -116,6 +119,7 @@ Q_SIGNALS: void selectionAccepted(); void sidebarVisibleChanged(); void shortcutsChanged(); + void defaultSuffixChanged(); protected Q_SLOTS: void updateFolder(const QUrl &f); diff --git a/src/dialogs/qquickplatformfiledialog.cpp b/src/dialogs/qquickplatformfiledialog.cpp index ab228d1f..b30f2b2b 100644 --- a/src/dialogs/qquickplatformfiledialog.cpp +++ b/src/dialogs/qquickplatformfiledialog.cpp @@ -422,4 +422,18 @@ void QQuickPlatformFileDialog::accept() \l {Qt.labs.settings}{Settings}. */ +/*! + \qmlproperty string FileDialog::defaultSuffix + \since 5.10 + + This property holds the suffix added to the filename if no other suffix was + specified. + + This property specifies a string that will be added to the filename if it + has no suffix already. The suffix is typically used to indicate the file + type (e.g. "txt" indicates a text file). + + If the first character is a dot ('.'), it is removed. +*/ + QT_END_NAMESPACE diff --git a/src/extras/Private/qquickmathutils.cpp b/src/extras/Private/qquickmathutils.cpp index 165a6f92..e40d8b6f 100644 --- a/src/extras/Private/qquickmathutils.cpp +++ b/src/extras/Private/qquickmathutils.cpp @@ -55,7 +55,7 @@ qreal QQuickMathUtils::pi2() const Converts the angle \a degrees to radians. */ qreal QQuickMathUtils::degToRad(qreal degrees) const { - return degrees * (M_PI / 180); + return qDegreesToRadians(degrees); } /*! @@ -68,14 +68,14 @@ qreal QQuickMathUtils::degToRad(qreal degrees) const { for example. */ qreal QQuickMathUtils::degToRadOffset(qreal degrees) const { - return (degrees - 90) * (M_PI / 180); + return qDegreesToRadians(degrees - 90); } /*! Converts the angle \a radians to degrees. */ qreal QQuickMathUtils::radToDeg(qreal radians) const { - return radians * (180 / M_PI); + return qRadiansToDegrees(radians); } /*! @@ -88,7 +88,7 @@ qreal QQuickMathUtils::radToDeg(qreal radians) const { expect. */ qreal QQuickMathUtils::radToDegOffset(qreal radians) const { - return radians * (180 / M_PI) + 90; + return qRadiansToDegrees(radians) + 90; } /*! diff --git a/src/extras/Styles/Flat/CalendarStyle.qml b/src/extras/Styles/Flat/CalendarStyle.qml index 2598ce78..ece0548d 100644 --- a/src/extras/Styles/Flat/CalendarStyle.qml +++ b/src/extras/Styles/Flat/CalendarStyle.qml @@ -190,7 +190,7 @@ Base.CalendarStyle { Label { text: localeDayName.length == 0 || localeDayName.length > 1 - ? control.__locale.dayName(styleData.dayOfWeek, Locale.ShortFormat)[0] + ? control.locale.dayName(styleData.dayOfWeek, Locale.ShortFormat)[0] : localeDayName color: !control.enabled ? FlatStyle.disabledColor : FlatStyle.styleColor opacity: !control.enabled ? FlatStyle.disabledOpacity : 1 @@ -202,7 +202,7 @@ Base.CalendarStyle { font.pixelSize: control.height * __headerFontRatio renderType: FlatStyle.__renderType - property string localeDayName: control.__locale.dayName(styleData.dayOfWeek, Locale.NarrowFormat) + property string localeDayName: control.locale.dayName(styleData.dayOfWeek, Locale.NarrowFormat) } } } diff --git a/src/extras/doc/qtquickextras.qdocconf b/src/extras/doc/qtquickextras.qdocconf index 5c4dc472..4d6128db 100644 --- a/src/extras/doc/qtquickextras.qdocconf +++ b/src/extras/doc/qtquickextras.qdocconf @@ -43,3 +43,6 @@ imagedirs += images navigation.landingpage = "Qt Quick Extras" navigation.qmltypespage = "Qt Quick Extras QML Types" +manifestmeta.highlighted.names = "QtQuickExtras/Qt Quick Extras - Dashboard" \ + "QtQuickExtras/Qt Quick Extras - Flat" \ + "QtQuickExtras/Qt Quick Extras - Gallery" diff --git a/src/extras/doc/src/qtquickextras-examples.qdoc b/src/extras/doc/src/qtquickextras-examples.qdoc index f54834fd..8ae35ef5 100644 --- a/src/extras/doc/src/qtquickextras-examples.qdoc +++ b/src/extras/doc/src/qtquickextras-examples.qdoc @@ -31,7 +31,7 @@ \title Qt Quick Extras Examples \brief A collection of examples for \l{Qt Quick Extras}. - Below is a listing of the examples for \l{Qt Quick Extras}. + Below you will find a list with examples for \l{Qt Quick Extras}. */ /*! @@ -53,6 +53,41 @@ \image qtquickextras-example-dashboard.png This example project demonstrates the use of \l CircularGauge to create a car dashboard. + + + The ValueSource type generates random data for testing the dashboard. + The data is random but there is a logical link between some of them, + for example, \c kph and \c rpm. + + + \snippet dashboard/qml/ValueSource.qml 0 + + It runs a looping SequentialAnimation that sets the values of + the properties over time. + + The SequentialAnimation object consists of several ParallelAnimation + objects, which in turn consist of two NumberAnimations, one for + \c kph and one for \c rpm. Both let the value develop to a certain + value over a specified \c duration with the Easing type \c Easing.InOutSine + + \snippet dashboard/qml/ValueSource.qml 1 + + The flashTimer object switches the turn signals \c on or \c off. + + \snippet dashboard/qml/TurnIndicator.qml 1 + + The \c paintOutlinePath(ctx) method does the actual painting of the arrow + for the turn signal. + + \snippet dashboard/qml/TurnIndicator.qml 2 + + The screen consists of a \c foregroundCanvas and a \c backgroundCanvas. + \c foregroundCanvas displays the green turn signal if the \c on and + \c flashing booleans are \c true. + + \snippet dashboard/qml/TurnIndicator.qml 3 +*/ + */ /*! diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index f3b76771..14860dc0 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -2,6 +2,3 @@ TEMPLATE = subdirs SUBDIRS += testplugin controls activeFocusOnTab applicationwindow dialogs \ extras qquicktreemodeladaptor customcontrolsstyle controls.depends = testplugin - -# QTBUG-60268 -boot2qt: SUBDIRS -= controls activeFocusOnTab applicationwindow dialogs extras customcontrolsstyle diff --git a/tests/auto/controls/data/tst_calendar.qml b/tests/auto/controls/data/tst_calendar.qml index 1185aca9..814a361a 100644 --- a/tests/auto/controls/data/tst_calendar.qml +++ b/tests/auto/controls/data/tst_calendar.qml @@ -132,7 +132,7 @@ Item { compare(calendar.selectedDate, new Date(new Date().setHours(0, 0, 0, 0))); compare(calendar.frameVisible, true); compare(calendar.dayOfWeekFormat, Locale.ShortFormat); - compare(calendar.__locale, Qt.locale()); + compare(calendar.locale, Qt.locale()); } function test_setAfterConstructed() { @@ -141,13 +141,13 @@ Item { calendar.selectedDate = new Date(1980, 0, 1); calendar.frameVisible = false; calendar.dayOfWeekFormat = Locale.NarrowFormat; - calendar.__locale = Qt.locale("de_DE"); + calendar.locale = Qt.locale("de_DE"); compare(calendar.minimumDate, new Date(1900, 0, 1)); compare(calendar.maximumDate, new Date(1999, 11, 31)); compare(calendar.selectedDate, new Date(1980, 0, 1)); compare(calendar.frameVisible, false); - compare(calendar.__locale, Qt.locale("de_DE")); + compare(calendar.locale, Qt.locale("de_DE")); } function test_selectedDate() { @@ -205,7 +205,7 @@ Item { calendar.selectedDate = new Date(2013, 0, 1); // Set this to a certain locale, because days will be in different // places depending on the system locale of the host machine. - calendar.__locale = Qt.locale("en_GB"); + calendar.locale = Qt.locale("en_GB"); /* January 2013 December 2012 M T W T F S S M T W T F S S @@ -371,7 +371,7 @@ Item { var startDate = new Date(2013, 0, 1); calendar.selectedDate = startDate; - calendar.__locale = Qt.locale("en_US"); + calendar.locale = Qt.locale("en_US"); compare(calendar.selectedDate, startDate); pressedSignalSpy.target = calendar; @@ -457,7 +457,7 @@ Item { calendar.minimumDate = new Date(2013, 0, 1); calendar.selectedDate = new Date(startDate); calendar.maximumDate = new Date(2013, 1, 5); - calendar.__locale = Qt.locale("no_NO"); + calendar.locale = Qt.locale("no_NO"); pressedSignalSpy.target = calendar; pressedSignalSpy.signalName = "pressed"; @@ -531,7 +531,7 @@ Item { 22 23 24 25 26 27 28 29 30 31 1 2 3 4 */ - calendar.__locale = Qt.locale("en_GB"); + calendar.locale = Qt.locale("en_GB"); calendar.selectedDate = new Date(2014, 11, 1); mousePress(calendar, toPixelsX(0), toPixelsY(0), Qt.LeftButton); compare(calendar.selectedDate, new Date(2014, 10, 24)); @@ -602,7 +602,7 @@ Item { calendar.minimumDate = new Date(2014, 1, 1); calendar.selectedDate = new Date(2014, 1, 28); calendar.maximumDate = new Date(2014, 2, 31); - calendar.__locale = Qt.locale("en_GB"); + calendar.locale = Qt.locale("en_GB"); pressedSignalSpy.target = calendar; pressedSignalSpy.signalName = "pressed"; @@ -875,7 +875,7 @@ Item { function test_pressAndHold() { calendar.selectedDate = new Date(2013, 0, 1); - calendar.__locale = Qt.locale("en_GB"); + calendar.locale = Qt.locale("en_GB"); pressedSignalSpy.target = calendar; pressedSignalSpy.signalName = "pressed"; diff --git a/tests/auto/controls/data/tst_combobox.qml b/tests/auto/controls/data/tst_combobox.qml index 632a1d15..ce8b6c42 100644 --- a/tests/auto/controls/data/tst_combobox.qml +++ b/tests/auto/controls/data/tst_combobox.qml @@ -512,10 +512,13 @@ TestCase { mouseClick(comboBox, comboBox.x + 1, comboBox.y + 1) verify(!comboBox.activeFocus) comboBox.activeFocusOnPress = true - if (Qt.platform.os === "osx") // on mac when the menu open, the __popup function does not return + if (Qt.platform.os === "osx") { // on macOS when the menu open, the __popup function does not return timer.start() - else // two mouse clicks to open and close the popup menu - mouseClick(comboBox, comboBox.x + 1, comboBox.y + 1) + } else { + // two mouse clicks to open and close the popup menu. The 1ms delay between mouse presses is + // needed with software quick renderer. Without the delay, this test is flaky. + mouseClick(comboBox, comboBox.x + 1, comboBox.y + 1, Qt.LeftButton, Qt.NoModifier, 1) + } mouseClick(comboBox, comboBox.x + 1, comboBox.y + 1) verify(comboBox.activeFocus) comboBox.destroy() diff --git a/tests/auto/controls/data/tst_slider.qml b/tests/auto/controls/data/tst_slider.qml index 34627daa..9e2ba0f1 100644 --- a/tests/auto/controls/data/tst_slider.qml +++ b/tests/auto/controls/data/tst_slider.qml @@ -51,7 +51,7 @@ import QtQuick 2.6 import QtTest 1.0 import QtQuickControlsTests 1.0 -import QtQuick.Controls 1.4 +import QtQuick.Controls 1.6 import QtQuick.Controls.Private 1.0 import QtQuick.Controls.Styles 1.4 @@ -176,6 +176,13 @@ Item { slider.value = 0 mouseWheel(slider, 5, 5, -40 * ratio, 0) compare(slider.value, slider.maximumValue) + + // Mousewheel deactivated + slider.value = 0 + slider.wheelEnabled = false + mouseWheel(slider, 5, 5, 4 * ratio, 0) + compare(slider.value, 0) + slider.destroy() } diff --git a/tests/auto/controls/data/tst_tableview.qml b/tests/auto/controls/data/tst_tableview.qml index fe50f241..0b54634e 100644 --- a/tests/auto/controls/data/tst_tableview.qml +++ b/tests/auto/controls/data/tst_tableview.qml @@ -971,6 +971,8 @@ TestCase { table.getColumn(0).width = 20 compare(table.getColumn(0).width, 20) table.resizeColumnsToContents() + if (Qt.platform.pluginName === "offscreen") + expectFail("", "QTBUG-62496") compare(table.getColumn(0).width, 50) table.destroy() } diff --git a/tests/auto/customcontrolsstyle/tst_customcontrolsstyle.cpp b/tests/auto/customcontrolsstyle/tst_customcontrolsstyle.cpp index 67aeb586..42354efd 100644 --- a/tests/auto/customcontrolsstyle/tst_customcontrolsstyle.cpp +++ b/tests/auto/customcontrolsstyle/tst_customcontrolsstyle.cpp @@ -68,6 +68,9 @@ void tst_customcontrolsstyle::style_data() void tst_customcontrolsstyle::style() { + if (QGuiApplication::platformName() == "offscreen") + QSKIP("Using grabImage does not work on offscreen platform"); + QFETCH(QString, specifiedStyle); QFETCH(QString, expectedStyleName); @@ -109,6 +112,9 @@ void tst_customcontrolsstyle::style() // start with Base, switch to custom style later on (for a specific QML engine) void tst_customcontrolsstyle::changeStyle() { + if (QGuiApplication::platformName() == "offscreen") + QSKIP("Using grabImage does not work on offscreen platform"); + qputenv("QT_QUICK_CONTROLS_1_STYLE", "Base"); QByteArray importPath = qgetenv("QML2_IMPORT_PATH"); if (importPath.isEmpty()) diff --git a/tests/auto/dialogs/tst_dialogs.cpp b/tests/auto/dialogs/tst_dialogs.cpp index 20da6e43..1f802113 100644 --- a/tests/auto/dialogs/tst_dialogs.cpp +++ b/tests/auto/dialogs/tst_dialogs.cpp @@ -56,6 +56,7 @@ private slots: void fileDialogDefaultModality(); void fileDialogNonModal(); void fileDialogNameFilters(); + void fileDialogDefaultSuffix(); private: }; @@ -207,6 +208,28 @@ void tst_dialogs::fileDialogNameFilters() QCOMPARE(dlg->property("selectedNameFilter").toString(), filters.first()); } +void tst_dialogs::fileDialogDefaultSuffix() +{ + QQuickView *window = new QQuickView; + QScopedPointer<QQuickWindow> cleanup(window); + + const QUrl sourceUrl = testFileUrl("RectWithFileDialog.qml"); + window->setSource(sourceUrl); + window->setGeometry(240, 240, 1024, 320); + window->show(); + QTRY_VERIFY(QTest::qWaitForWindowExposed(window)); + QVERIFY(window->rootObject()); + + QObject *dlg = qvariant_cast<QObject *>(window->rootObject()->property("fileDialog")); + QCOMPARE(dlg->property("defaultSuffix").toString(), QString()); + dlg->setProperty("defaultSuffix", "txt"); + QCOMPARE(dlg->property("defaultSuffix").toString(), QString("txt")); + dlg->setProperty("defaultSuffix", ".txt"); + QCOMPARE(dlg->property("defaultSuffix").toString(), QString("txt")); + dlg->setProperty("defaultSuffix", QString()); + QCOMPARE(dlg->property("defaultSuffix").toString(), QString()); +} + QTEST_MAIN(tst_dialogs) #include "tst_dialogs.moc" diff --git a/tests/auto/extras/data/tst_picture.qml b/tests/auto/extras/data/tst_picture.qml index e11d28fb..9ecc89be 100644 --- a/tests/auto/extras/data/tst_picture.qml +++ b/tests/auto/extras/data/tst_picture.qml @@ -107,6 +107,9 @@ TestCase { } function test_source(data) { + if (Qt.platform.pluginName === "offscreen") + skip("Using grabImage does not work on offscreen platform"); + picture = Qt.createQmlObject("import QtQuick.Extras 1.4; Picture {}", testCase, ""); verify(picture, "Picture: failed to create an instance"); picture.source = data.tag; @@ -134,6 +137,9 @@ TestCase { } function test_color(data) { + if (Qt.platform.pluginName === "offscreen") + skip("Using grabImage does not work on offscreen platform"); + picture = Qt.createQmlObject("import QtQuick.Extras 1.4; Picture {}", testCase, ""); verify(picture, "Picture: failed to create an instance"); diff --git a/tests/auto/extras/data/tst_statusindicator.qml b/tests/auto/extras/data/tst_statusindicator.qml index 257ec715..8801ead7 100644 --- a/tests/auto/extras/data/tst_statusindicator.qml +++ b/tests/auto/extras/data/tst_statusindicator.qml @@ -90,6 +90,9 @@ TestCase { } function test_active(data) { + if (Qt.platform.pluginName === "offscreen") + skip("Using grabImage does not work on offscreen platform"); + indicator = Qt.createQmlObject("import QtQuick.Extras 1.4; StatusIndicator { }", testCase, ""); verify(indicator); compare(indicator.active, false); @@ -106,6 +109,9 @@ TestCase { } function test_color() { + if (Qt.platform.pluginName === "offscreen") + skip("Using grabImage does not work on offscreen platform"); + var flatStyle = Settings.styleName === "Flat"; indicator = Qt.createQmlObject("import QtQuick.Extras 1.4; StatusIndicator { }", testCase, ""); diff --git a/tests/manual/viewinqwidget/main.qml b/tests/manual/viewinqwidget/main.qml index 36c09b50..e50e7712 100644 --- a/tests/manual/viewinqwidget/main.qml +++ b/tests/manual/viewinqwidget/main.qml @@ -28,14 +28,24 @@ import QtQuick 2.2 import QtQuick.Controls 1.3 +import QtQuick.Layouts 1.3 Item { visible: true width: 200 height: 200 - ComboBox { - anchors.centerIn: parent - model: [ "Banana", "Apple", "Coconut" ] + ColumnLayout { + anchors.fill: parent + + TextField { + Layout.alignment: Qt.AlignCenter + text : "Text with context menu" + } + + ComboBox { + Layout.alignment: Qt.AlignCenter + model: [ "Banana", "Apple", "Coconut" ] + } } } |