diff options
author | Mitch Curtis <mitch.curtis@theqtcompany.com> | 2015-08-25 15:43:56 +0200 |
---|---|---|
committer | Mitch Curtis <mitch.curtis@theqtcompany.com> | 2015-09-02 13:35:03 +0000 |
commit | d1b20513798ed441afddb87fd4e7facce78349e1 (patch) | |
tree | 48591126eb3355f95509c3df5835f8a5b5b6bd2e | |
parent | 70592075464dad3f8fef173422a30a06eaed3d80 (diff) |
Don't consider QLocale a value type.
This fixes a regression where all of the properties of
Qt.inputMethod.locale were undefined.
Change-Id: Id33890a78296709baad6aeda96d74ca8cb39c61d
Task-number: QTBUG-47916
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
-rw-r--r-- | src/qml/qml/qqmlvaluetype.cpp | 3 | ||||
-rw-r--r-- | tests/auto/qml/qqmlvaluetypes/data/locale_read.qml | 22 | ||||
-rw-r--r-- | tests/auto/qml/qqmlvaluetypes/tst_qqmlvaluetypes.cpp | 38 |
3 files changed, 62 insertions, 1 deletions
diff --git a/src/qml/qml/qqmlvaluetype.cpp b/src/qml/qml/qqmlvaluetype.cpp index 10eaae0c77..6825e5f004 100644 --- a/src/qml/qml/qqmlvaluetype.cpp +++ b/src/qml/qml/qqmlvaluetype.cpp @@ -82,7 +82,8 @@ bool QQmlValueTypeFactoryImpl::isValueType(int idx) && idx != QVariant::StringList && idx != QMetaType::QObjectStar && idx != QMetaType::VoidStar - && idx != QMetaType::QVariant) { + && idx != QMetaType::QVariant + && idx != QMetaType::QLocale) { return true; } diff --git a/tests/auto/qml/qqmlvaluetypes/data/locale_read.qml b/tests/auto/qml/qqmlvaluetypes/data/locale_read.qml new file mode 100644 index 0000000000..5ae6b41259 --- /dev/null +++ b/tests/auto/qml/qqmlvaluetypes/data/locale_read.qml @@ -0,0 +1,22 @@ +import QtQuick 2.0 + +Item { + property string amText: Qt.inputMethod.locale.amText + property string decimalPoint: Qt.inputMethod.locale.decimalPoint + property string exponential: Qt.inputMethod.locale.exponential + property int firstDayOfWeek: Qt.inputMethod.locale.firstDayOfWeek + property string groupSeparator: Qt.inputMethod.locale.groupSeparator + property int measurementSystem: Qt.inputMethod.locale.measurementSystem + property string name: Qt.inputMethod.locale.name + property string nativeCountryName: Qt.inputMethod.locale.nativeCountryName + property string nativeLanguageName: Qt.inputMethod.locale.nativeLanguageName + property string negativeSign: Qt.inputMethod.locale.negativeSign + property string percent: Qt.inputMethod.locale.percent + property string pmText: Qt.inputMethod.locale.pmText + property string positiveSign: Qt.inputMethod.locale.positiveSign + property int textDirection: Qt.inputMethod.locale.textDirection + property var uiLanguages: Qt.inputMethod.locale.uiLanguages + property var weekDays: Qt.inputMethod.locale.weekDays + property string zeroDigit: Qt.inputMethod.locale.zeroDigit +} + diff --git a/tests/auto/qml/qqmlvaluetypes/tst_qqmlvaluetypes.cpp b/tests/auto/qml/qqmlvaluetypes/tst_qqmlvaluetypes.cpp index 578004b0a1..f93190cab6 100644 --- a/tests/auto/qml/qqmlvaluetypes/tst_qqmlvaluetypes.cpp +++ b/tests/auto/qml/qqmlvaluetypes/tst_qqmlvaluetypes.cpp @@ -36,6 +36,7 @@ #include <QQmlComponent> #include <QDebug> #include <private/qquickvaluetypes_p.h> +#include <private/qqmlglobal_p.h> #include "../../shared/util.h" #include "testtypes.h" @@ -67,6 +68,7 @@ private slots: void font(); void color(); void variant(); + void locale(); void bindingAssignment(); void bindingRead(); @@ -316,6 +318,42 @@ void tst_qqmlvaluetypes::variant() } } +void tst_qqmlvaluetypes::locale() +{ + { + QQmlComponent component(&engine, testFileUrl("locale_read.qml")); + QScopedPointer<QObject> object(component.create()); + QVERIFY(!object.isNull()); + + QVERIFY(QQml_guiProvider()->inputMethod()); + QInputMethod *inputMethod = qobject_cast<QInputMethod*>(QQml_guiProvider()->inputMethod()); + QLocale locale = inputMethod->locale(); + + QCOMPARE(object->property("amText").toString(), locale.amText()); + QCOMPARE(object->property("decimalPoint").toString().at(0), locale.decimalPoint()); + QCOMPARE(object->property("exponential").toString().at(0), locale.exponential()); + // Sunday is 0 in JavaScript. + QCOMPARE(object->property("firstDayOfWeek").toInt(), int(locale.firstDayOfWeek() == Qt::Sunday ? 0 : locale.firstDayOfWeek())); + QCOMPARE(object->property("groupSeparator").toString().at(0), locale.groupSeparator()); + QCOMPARE(object->property("measurementSystem").toInt(), int(locale.measurementSystem())); + QCOMPARE(object->property("name").toString(), locale.name()); + QCOMPARE(object->property("nativeCountryName").toString(), locale.nativeCountryName()); + QCOMPARE(object->property("nativeLanguageName").toString(), locale.nativeLanguageName()); + QCOMPARE(object->property("negativeSign").toString().at(0), locale.negativeSign()); + QCOMPARE(object->property("percent").toString().at(0), locale.percent()); + QCOMPARE(object->property("pmText").toString(), locale.pmText()); + QCOMPARE(object->property("positiveSign").toString().at(0), locale.positiveSign()); + QCOMPARE(object->property("textDirection").toInt(), int(locale.textDirection())); + QCOMPARE(object->property("uiLanguages").toStringList(), locale.uiLanguages()); + QList<Qt::DayOfWeek> weekDays; + foreach (const QVariant &weekDay, object->property("weekDays").toList()) { + weekDays.append(Qt::DayOfWeek(weekDay.toInt())); + } + QCOMPARE(weekDays, locale.weekdays()); + QCOMPARE(object->property("zeroDigit").toString().at(0), locale.zeroDigit()); + } +} + void tst_qqmlvaluetypes::sizereadonly() { { |