From f3edb627dc0cf780a593765babde59e1194aa9eb Mon Sep 17 00:00:00 2001 From: Alex Blasche <alexander.blasche@digia.com> Date: Tue, 23 Sep 2014 12:28:41 +0200 Subject: [PATCH] Fix DeclarativePlace unit test This broke due to a behavior change in QtDeclarative when converting JS Array to C++. For more details see QTBUG-40431. Change-Id: Id666b4872a5cd1e435cca67b5362c2ab3beb3633 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> --- .../location/declarativeplaces/qdeclarativeplace.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/imports/location/declarativeplaces/qdeclarativeplace.cpp b/src/imports/location/declarativeplaces/qdeclarativeplace.cpp index 0b755b195..05fa3d012 100644 --- a/src/imports/location/declarativeplaces/qdeclarativeplace.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativeplace.cpp @@ -1203,14 +1203,18 @@ QPlaceManager *QDeclarativePlace::manager() */ QString QDeclarativePlace::primaryValue(const QString &contactType) const { - if (m_contactDetails->value(contactType).userType() == QVariant::List) { + QVariant value = m_contactDetails->value(contactType); + if (value.userType() == qMetaTypeId<QJSValue>()) + value = value.value<QJSValue>().toVariant(); + + if (value.userType() == QVariant::List) { QVariantList detailList = m_contactDetails->value(contactType).toList(); if (!detailList.isEmpty()) { QDeclarativeContactDetail *primaryDetail = qobject_cast<QDeclarativeContactDetail *>(detailList.at(0).value<QObject *>()); if (primaryDetail) return primaryDetail->value(); } - } else if (m_contactDetails->value(contactType).userType() == QMetaType::QObjectStar) { + } else if (value.userType() == QMetaType::QObjectStar) { QDeclarativeContactDetail *primaryDetail = qobject_cast<QDeclarativeContactDetail *>(m_contactDetails->value(contactType).value<QObject *>()); if (primaryDetail) return primaryDetail->value(); -- GitLab