diff options
author | Liang Qi <liang.qi@qt.io> | 2017-11-15 09:11:03 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-11-15 09:11:04 +0100 |
commit | 558b3d09e21fe1e0cc43d82fc76e3eea981d82d2 (patch) | |
tree | cb5ef85534ab3bb08ca03ba7e8c320a58b1642b7 | |
parent | 442843db6f5dce6b594448d43b380c9b884a7c91 (diff) | |
parent | a0559ea88be32e19e83b2131cb26e61e873dc817 (diff) |
Merge remote-tracking branch 'origin/5.9' into 5.10
Change-Id: Ide4b85626dd153b534c39a3afa2f3b9e732badf5
-rw-r--r-- | src/imports/platform/qquickplatformmenu_p.h | 1 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformstandardpaths_p.h | 2 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformsystemtrayicon_p.h | 2 | ||||
-rw-r--r-- | src/imports/platform/qtlabsplatformplugin.cpp | 6 | ||||
-rw-r--r-- | src/quicktemplates2/qquickdialogbuttonbox.cpp | 15 | ||||
-rw-r--r-- | src/quicktemplates2/qquickslider.cpp | 6 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_slider.qml | 6 | ||||
-rw-r--r-- | tests/auto/platform/data/tst_messagedialog.qml | 42 | ||||
-rw-r--r-- | tests/auto/platform/data/tst_systemtrayicon.qml | 32 |
9 files changed, 95 insertions, 17 deletions
diff --git a/src/imports/platform/qquickplatformmenu_p.h b/src/imports/platform/qquickplatformmenu_p.h index 7456c660..b5c23b61 100644 --- a/src/imports/platform/qquickplatformmenu_p.h +++ b/src/imports/platform/qquickplatformmenu_p.h @@ -209,5 +209,6 @@ private: QT_END_NAMESPACE QML_DECLARE_TYPE(QQuickPlatformMenu) +Q_DECLARE_METATYPE(QPlatformMenu::MenuType) #endif // QQUICKPLATFORMMENU_P_H diff --git a/src/imports/platform/qquickplatformstandardpaths_p.h b/src/imports/platform/qquickplatformstandardpaths_p.h index c3d879b0..e2f4e11e 100644 --- a/src/imports/platform/qquickplatformstandardpaths_p.h +++ b/src/imports/platform/qquickplatformstandardpaths_p.h @@ -86,5 +86,7 @@ private: QT_END_NAMESPACE QML_DECLARE_TYPE(QQuickPlatformStandardPaths) +Q_DECLARE_METATYPE(QStandardPaths::StandardLocation) +Q_DECLARE_METATYPE(QStandardPaths::LocateOptions) #endif // QQUICKPLATFORMSTANDARDPATHS_P_H diff --git a/src/imports/platform/qquickplatformsystemtrayicon_p.h b/src/imports/platform/qquickplatformsystemtrayicon_p.h index 7aa07512..77a78f30 100644 --- a/src/imports/platform/qquickplatformsystemtrayicon_p.h +++ b/src/imports/platform/qquickplatformsystemtrayicon_p.h @@ -137,5 +137,7 @@ private: QT_END_NAMESPACE QML_DECLARE_TYPE(QQuickPlatformSystemTrayIcon) +Q_DECLARE_METATYPE(QPlatformSystemTrayIcon::ActivationReason) +Q_DECLARE_METATYPE(QPlatformSystemTrayIcon::MessageIcon) #endif // QQUICKPLATFORMSYSTEMTRAYICON_P_H diff --git a/src/imports/platform/qtlabsplatformplugin.cpp b/src/imports/platform/qtlabsplatformplugin.cpp index bcb9ac98..1eac7d80 100644 --- a/src/imports/platform/qtlabsplatformplugin.cpp +++ b/src/imports/platform/qtlabsplatformplugin.cpp @@ -56,9 +56,6 @@ # include "qquickplatformsystemtrayicon_p.h" #endif -Q_DECLARE_METATYPE(QStandardPaths::StandardLocation) -Q_DECLARE_METATYPE(QStandardPaths::LocateOptions) - static inline void initResources() { #ifdef QT_STATIC @@ -102,6 +99,7 @@ void QtLabsPlatformPlugin::registerTypes(const char *uri) qmlRegisterType<QQuickPlatformMenuItem>(uri, 1, 0, "MenuItem"); qmlRegisterType<QQuickPlatformMenuItemGroup>(uri, 1, 0, "MenuItemGroup"); qmlRegisterType<QQuickPlatformMenuSeparator>(uri, 1, 0, "MenuSeparator"); + qRegisterMetaType<QPlatformMenu::MenuType>(); qmlRegisterUncreatableType<QPlatformDialogHelper>(uri, 1, 0, "StandardButton", QQuickPlatformDialog::tr("Cannot create an instance of StandardButton")); qmlRegisterSingletonType<QQuickPlatformStandardPaths>(uri, 1, 0, "StandardPaths", QQuickPlatformStandardPaths::create); @@ -110,6 +108,8 @@ void QtLabsPlatformPlugin::registerTypes(const char *uri) #if QT_CONFIG(systemtrayicon) qmlRegisterType<QQuickPlatformSystemTrayIcon>(uri, 1, 0, "SystemTrayIcon"); + qRegisterMetaType<QPlatformSystemTrayIcon::ActivationReason>(); + qRegisterMetaType<QPlatformSystemTrayIcon::MessageIcon>(); #endif } diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp index b6a9d757..cd971139 100644 --- a/src/quicktemplates2/qquickdialogbuttonbox.cpp +++ b/src/quicktemplates2/qquickdialogbuttonbox.cpp @@ -197,13 +197,13 @@ static QRectF alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment qreal w = size.width(); qreal h = size.height(); if ((alignment & Qt::AlignVCenter) == Qt::AlignVCenter) - y += rectangle.size().height() / 2 - h / 2; + y += (rectangle.size().height() - h) / 2; else if ((alignment & Qt::AlignBottom) == Qt::AlignBottom) y += rectangle.size().height() - h; if ((alignment & Qt::AlignRight) == Qt::AlignRight) x += rectangle.size().width() - w; else if ((alignment & Qt::AlignHCenter) == Qt::AlignHCenter) - x += rectangle.size().width() / 2 - w / 2; + x += (rectangle.size().width() - w) / 2; return QRectF(x, y, w, h); } @@ -213,15 +213,12 @@ void QQuickDialogButtonBoxPrivate::resizeContent() if (!contentItem) return; - const int halign = alignment & Qt::AlignHorizontal_Mask; - const int valign = alignment & Qt::AlignVertical_Mask; - - const qreal cw = !halign ? q->availableWidth() : contentItem->implicitWidth(); - const qreal ch = !valign ? q->availableHeight() : contentItem->implicitHeight(); - QRectF geometry = q->boundingRect().adjusted(q->leftPadding(), q->topPadding(), -q->rightPadding(), -q->bottomPadding()); - if (halign || valign) + if (alignment != 0) { + qreal cw = (alignment & Qt::AlignHorizontal_Mask) == 0 ? q->availableWidth() : contentItem->implicitWidth(); + qreal ch = (alignment & Qt::AlignVertical_Mask) == 0 ? q->availableHeight() : contentItem->implicitHeight(); geometry = alignedRect(q->isMirrored() ? Qt::RightToLeft : Qt::LeftToRight, alignment, QSizeF(cw, ch), geometry); + } contentItem->setPosition(geometry.topLeft()); contentItem->setSize(geometry.size()); diff --git a/src/quicktemplates2/qquickslider.cpp b/src/quicktemplates2/qquickslider.cpp index 8628f981..b358663d 100644 --- a/src/quicktemplates2/qquickslider.cpp +++ b/src/quicktemplates2/qquickslider.cpp @@ -545,10 +545,10 @@ void QQuickSlider::setHandle(QQuickItem *handle) qreal QQuickSlider::valueAt(qreal position) const { Q_D(const QQuickSlider); - const qreal value = d->from + (d->to - d->from) * position; + const qreal value = (d->to - d->from) * position; if (qFuzzyIsNull(d->stepSize)) - return value; - return qRound(value / d->stepSize) * d->stepSize; + return d->from + value; + return d->from + qRound(value / d->stepSize) * d->stepSize; } /*! diff --git a/tests/auto/controls/data/tst_slider.qml b/tests/auto/controls/data/tst_slider.qml index b70aeaab..a831e402 100644 --- a/tests/auto/controls/data/tst_slider.qml +++ b/tests/auto/controls/data/tst_slider.qml @@ -776,12 +776,14 @@ TestCase { return [ { tag: "0.0..1.0", from: 0.0, to: 1.0, values: [0.0, 0.2, 0.5, 1.0] }, { tag: "0..100", from: 0, to: 100, values: [0, 20, 50, 100] }, - { tag: "100..-100", from: 100, to: -100, values: [100, 60, 0, -100] } + { tag: "100..-100", from: 100, to: -100, values: [100, 60, 0, -100] }, + { tag: "-7..7", from: -7, to: 7, stepSize: 1.0, values: [-7.0, -4.0, 0.0, 7.0] }, + { tag: "-3..7", from: -3, to: 7, stepSize: 5.0, values: [-3.0, -3.0, 2.0, 7.0] }, ] } function test_valueAt(data) { - var control = createTemporaryObject(slider, testCase, {from: data.from, to: data.to}) + var control = createTemporaryObject(slider, testCase, {from: data.from, to: data.to, stepSize: data.stepSize}) verify(control) compare(control.valueAt(0.0), data.values[0]) diff --git a/tests/auto/platform/data/tst_messagedialog.qml b/tests/auto/platform/data/tst_messagedialog.qml index 8415f429..cf51c27d 100644 --- a/tests/auto/platform/data/tst_messagedialog.qml +++ b/tests/auto/platform/data/tst_messagedialog.qml @@ -63,9 +63,51 @@ TestCase { MessageDialog { } } + SignalSpy { + id: spy + } + function test_instance() { var dialog = messageDialog.createObject(testCase) verify(dialog) dialog.destroy() } + + function test_standardButtons() { + // Q_FLAGS(QPlatformDialogHelper::StandardButtons) + compare(MessageDialog.NoButton , 0x00000000) + compare(MessageDialog.Ok , 0x00000400) + compare(MessageDialog.Save , 0x00000800) + compare(MessageDialog.SaveAll , 0x00001000) + compare(MessageDialog.Open , 0x00002000) + compare(MessageDialog.Yes , 0x00004000) + compare(MessageDialog.YesToAll , 0x00008000) + compare(MessageDialog.No , 0x00010000) + compare(MessageDialog.NoToAll , 0x00020000) + compare(MessageDialog.Abort , 0x00040000) + compare(MessageDialog.Retry , 0x00080000) + compare(MessageDialog.Ignore , 0x00100000) + compare(MessageDialog.Close , 0x00200000) + compare(MessageDialog.Cancel , 0x00400000) + compare(MessageDialog.Discard , 0x00800000) + compare(MessageDialog.Help , 0x01000000) + compare(MessageDialog.Apply , 0x02000000) + compare(MessageDialog.Reset , 0x04000000) + compare(MessageDialog.RestoreDefaults, 0x08000000) + } + + function test_clicked() { + var dialog = messageDialog.createObject(testCase) + verify(dialog) + + spy.target = dialog + spy.signalName = "clicked" + + dialog.clicked(MessageDialog.Yes) + compare(spy.count, 1) + compare(spy.signalArguments[0][0], MessageDialog.Yes) + + spy.clear() + dialog.destroy() + } } diff --git a/tests/auto/platform/data/tst_systemtrayicon.qml b/tests/auto/platform/data/tst_systemtrayicon.qml index 62e231c0..ea6f731a 100644 --- a/tests/auto/platform/data/tst_systemtrayicon.qml +++ b/tests/auto/platform/data/tst_systemtrayicon.qml @@ -97,4 +97,36 @@ TestCase { spy.clear() icon.destroy() } + + function test_messageIcon() { + // Q_ENUMS(QPlatformSystemTrayIcon::ActivationReason) + compare(SystemTrayIcon.NoIcon, 0) + compare(SystemTrayIcon.Information, 1) + compare(SystemTrayIcon.Warning, 2) + compare(SystemTrayIcon.Critical, 3) + } + + function test_activationReason() { + // Q_ENUMS(QPlatformSystemTrayIcon::ActivationReason) + compare(SystemTrayIcon.Unknown, 0) + compare(SystemTrayIcon.Context, 1) + compare(SystemTrayIcon.DoubleClick, 2) + compare(SystemTrayIcon.Trigger, 3) + compare(SystemTrayIcon.MiddleClick, 4) + } + + function test_activated() { + var icon = systemTrayIcon.createObject(testCase) + verify(icon) + + spy.target = icon + spy.signalName = "activated" + + icon.activated(SystemTrayIcon.Trigger) + compare(spy.count, 1) + compare(spy.signalArguments[0][0], SystemTrayIcon.Trigger) + + spy.clear() + icon.destroy() + } } |