diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-09-04 11:58:35 +0200 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-09-15 14:40:23 +0200 |
commit | a6c48812eff4e1aa9b05ea4b811de357242c5588 (patch) | |
tree | a0524fa87eb6c77b3b0f0d9cb47b88e0655a8e97 /src/location/declarativemaps/qdeclarativepolylinemapitem.cpp | |
parent | 366a6379fb80e8c223ae57b2fd791ffdfeacdbf3 (diff) | |
download | qtlocation-a6c48812eff4e1aa9b05ea4b811de357242c5588.tar.gz |
Change QJSValue properties to QList<QGeoCoordinate/Rectangle>
The QML engine is able to operate on lists of gadgets, there is no need
for using private APIs to operate on QJSValue.
For the time being, this breaks a QML construct like
path[0].longitude = 0
This no longer changes the value of path[0].latitude in place. Instead,
use
var path0 = path[0]
path0.longitude = ...
path[0] = path0
This is consistent with other properties that have type list<gadget>, as
QML operates on copies of values, not on references. Adapt the test case
accordingly.
Since support for value-initializing properties of type list<gadget>
requires plumbing in the QML engine, and registration of conversion
routines from QVariantMap to QGeoCoordinate, augment the test.
Remove the now unnecessary toList/fromList conversion functions, and
the dependency to private QtQml libraries.
Fixes: QTBUG-105241
Change-Id: I8f248c457a6de27a3b2680bdc948c5683ebc7fa0
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Diffstat (limited to 'src/location/declarativemaps/qdeclarativepolylinemapitem.cpp')
-rw-r--r-- | src/location/declarativemaps/qdeclarativepolylinemapitem.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/location/declarativemaps/qdeclarativepolylinemapitem.cpp b/src/location/declarativemaps/qdeclarativepolylinemapitem.cpp index 5d9fbb0b..2ae6ed6f 100644 --- a/src/location/declarativemaps/qdeclarativepolylinemapitem.cpp +++ b/src/location/declarativemaps/qdeclarativepolylinemapitem.cpp @@ -966,17 +966,14 @@ void QDeclarativePolylineMapItem::setMap(QDeclarativeGeoMap *quickMap, QGeoMap * define the polyline. */ -QJSValue QDeclarativePolylineMapItem::path() const +QList<QGeoCoordinate> QDeclarativePolylineMapItem::path() const { - return fromList(this, m_geopath.path()); + return m_geopath.path(); } -void QDeclarativePolylineMapItem::setPath(const QJSValue &value) +void QDeclarativePolylineMapItem::setPath(const QList<QGeoCoordinate> &value) { - if (!value.isArray()) - return; - - setPathFromGeoList(toList(this, value)); + setPathFromGeoList(value); } /*! |