From f0c82e77aa2811c326c543468fc422c18ca98a47 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Tue, 20 Dec 2011 11:02:10 +1000 Subject: [PATCH] Qt.locale() always returns the 'C' locale. QLocale(QString()) does not return the default locale. If no locale is specified, use the QLocale() constructor. Change-Id: I76198b7ea66a6326483ec47ac36e080159ca459a Reviewed-by: Martin Jones --- src/declarative/qml/qdeclarativelocale.cpp | 5 ++++- .../qdeclarativelocale/tst_qdeclarativelocale.cpp | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletions(-) diff --git a/src/declarative/qml/qdeclarativelocale.cpp b/src/declarative/qml/qdeclarativelocale.cpp index ae57edb..9f2116f 100644 --- a/src/declarative/qml/qdeclarativelocale.cpp +++ b/src/declarative/qml/qdeclarativelocale.cpp @@ -811,7 +811,10 @@ v8::Handle QDeclarativeLocale::locale(QV8Engine *v8engine, const QStr QV8LocaleDataDeletable *d = localeV8Data(v8engine); v8::Local v8Value = d->constructor->NewInstance(); QV8LocaleDataResource *r = new QV8LocaleDataResource(v8engine); - r->locale = QLocale(locale); + if (locale.isEmpty()) + r->locale = QLocale(); + else + r->locale = QLocale(locale); v8Value->SetExternalResource(r); return v8Value; diff --git a/tests/auto/declarative/qdeclarativelocale/tst_qdeclarativelocale.cpp b/tests/auto/declarative/qdeclarativelocale/tst_qdeclarativelocale.cpp index b2f35fd..d49122c 100644 --- a/tests/auto/declarative/qdeclarativelocale/tst_qdeclarativelocale.cpp +++ b/tests/auto/declarative/qdeclarativelocale/tst_qdeclarativelocale.cpp @@ -54,6 +54,8 @@ public: tst_qdeclarativelocale() { } private slots: + void defaultLocale(); + void properties_data(); void properties(); void currencySymbol_data(); @@ -114,6 +116,16 @@ private: QDeclarativeEngine engine; }; +void tst_qdeclarativelocale::defaultLocale() +{ + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(TESTDATA("properties.qml"))); + + QObject *obj = c.create(); + QVERIFY(obj); + + QCOMPARE(obj->property("name").toString(), QLocale().name()); +} + #define LOCALE_PROP(type,prop) { #prop, QVariant(type(qlocale.prop())) } void tst_qdeclarativelocale::addPropertyData(const QString &l) -- 1.7.2.5