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/qdeclarativepolygonmapitem.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/qdeclarativepolygonmapitem.cpp')
-rw-r--r-- | src/location/declarativemaps/qdeclarativepolygonmapitem.cpp | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/location/declarativemaps/qdeclarativepolygonmapitem.cpp b/src/location/declarativemaps/qdeclarativepolygonmapitem.cpp index 8bba25be..24d98f12 100644 --- a/src/location/declarativemaps/qdeclarativepolygonmapitem.cpp +++ b/src/location/declarativemaps/qdeclarativepolygonmapitem.cpp @@ -710,23 +710,18 @@ void QDeclarativePolygonMapItem::setMap(QDeclarativeGeoMap *quickMap, QGeoMap *m \sa addCoordinate, removeCoordinate */ -QJSValue QDeclarativePolygonMapItem::path() const +QList<QGeoCoordinate> QDeclarativePolygonMapItem::path() const { - return fromList(this, m_geopoly.perimeter()); + return m_geopoly.perimeter(); } -void QDeclarativePolygonMapItem::setPath(const QJSValue &value) +void QDeclarativePolygonMapItem::setPath(const QList<QGeoCoordinate> &path) { - if (!value.isArray()) - return; - - const QList<QGeoCoordinate> pathList = toList(this, value); - // Equivalent to QDeclarativePolylineMapItem::setPathFromGeoList - if (m_geopoly.perimeter() == pathList) + if (m_geopoly.perimeter() == path) return; - m_geopoly.setPerimeter(pathList); + m_geopoly.setPerimeter(path); m_d->onGeoGeometryChanged(); emit pathChanged(); |