summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@theqtcompany.com>2015-11-16 20:18:03 +0100
committerMichal Klocek <michal.klocek@theqtcompany.com>2015-11-27 11:30:25 +0000
commiteea315187d1add70aaf69745c031b8d6342b2303 (patch)
tree403a0fe2548dfb57466a84ff91beb94a2aafcf63
parent3fadff6e01232f70492a05b1fb779968d9662462 (diff)
downloadqtlocation-eea315187d1add70aaf69745c031b8d6342b2303.tar.gz
Improve map item rendering performance
A flood of input events, such as when pinch, triggers multiple map item geometry updates to occur per frame. These geometry updates are potentially expensive and only the last generated geometry is used. Mark items to be polished to make geometry updates once per frame when updatePolish() is called. Done-with: Aaron McCarthy <aaron.mccarthy@jollamobile.com> Change-Id: I0af40e2d0b09c8364382d4b4c018988f3986f7f0 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
-rw-r--r--src/imports/location/qdeclarativecirclemapitem.cpp32
-rw-r--r--src/imports/location/qdeclarativecirclemapitem_p.h6
-rw-r--r--src/imports/location/qdeclarativegeomap.cpp4
-rw-r--r--src/imports/location/qdeclarativegeomapitembase.cpp12
-rw-r--r--src/imports/location/qdeclarativegeomapitembase_p.h5
-rw-r--r--src/imports/location/qdeclarativegeomapquickitem.cpp30
-rw-r--r--src/imports/location/qdeclarativegeomapquickitem_p.h2
-rw-r--r--src/imports/location/qdeclarativepolygonmapitem.cpp19
-rw-r--r--src/imports/location/qdeclarativepolygonmapitem_p.h2
-rw-r--r--src/imports/location/qdeclarativepolylinemapitem.cpp17
-rw-r--r--src/imports/location/qdeclarativepolylinemapitem_p.h2
-rw-r--r--src/imports/location/qdeclarativerectanglemapitem.cpp34
-rw-r--r--src/imports/location/qdeclarativerectanglemapitem_p.h4
-rw-r--r--tests/auto/declarative_ui/tst_map_error.qml2
-rw-r--r--tests/auto/declarative_ui/tst_map_flick.qml1
-rw-r--r--tests/auto/declarative_ui/tst_map_item.qml43
-rw-r--r--tests/auto/declarative_ui/tst_map_item_details.qml17
-rw-r--r--tests/auto/declarative_ui/tst_map_item_fit_viewport.qml2
-rw-r--r--tests/auto/declarative_ui/tst_map_mouse.qml54
19 files changed, 155 insertions, 133 deletions
diff --git a/src/imports/location/qdeclarativecirclemapitem.cpp b/src/imports/location/qdeclarativecirclemapitem.cpp
index 92977179..eb3de7a2 100644
--- a/src/imports/location/qdeclarativecirclemapitem.cpp
+++ b/src/imports/location/qdeclarativecirclemapitem.cpp
@@ -35,7 +35,6 @@
****************************************************************************/
#include "qdeclarativecirclemapitem_p.h"
-#include "qdeclarativegeomapquickitem_p.h"
#include "qdeclarativepolygonmapitem_p.h"
#include "qgeocameracapabilities_p.h"
#include "qgeoprojection_p.h"
@@ -302,9 +301,9 @@ QDeclarativeCircleMapItem::QDeclarativeCircleMapItem(QQuickItem *parent)
{
setFlag(ItemHasContents, true);
QObject::connect(&border_, SIGNAL(colorChanged(QColor)),
- this, SLOT(updateMapItemAssumeDirty()));
+ this, SLOT(markSourceDirtyAndUpdate()));
QObject::connect(&border_, SIGNAL(widthChanged(qreal)),
- this, SLOT(updateMapItemAssumeDirty()));
+ this, SLOT(markSourceDirtyAndUpdate()));
// assume that circles are not self-intersecting
// to speed up processing
@@ -335,21 +334,18 @@ QDeclarativeMapLineProperties *QDeclarativeCircleMapItem::border()
return &border_;
}
-void QDeclarativeCircleMapItem::updateMapItemAssumeDirty()
+void QDeclarativeCircleMapItem::markSourceDirtyAndUpdate()
{
geometry_.markSourceDirty();
borderGeometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
}
void QDeclarativeCircleMapItem::setMap(QDeclarativeGeoMap *quickMap, QGeoMap *map)
{
QDeclarativeGeoMapItemBase::setMap(quickMap,map);
- if (map) {
- geometry_.markSourceDirty();
- borderGeometry_.markSourceDirty();
- updateMapItem();
- }
+ if (map)
+ markSourceDirtyAndUpdate();
}
/*!
@@ -365,10 +361,7 @@ void QDeclarativeCircleMapItem::setCenter(const QGeoCoordinate &center)
return;
center_ = center;
-
- geometry_.markSourceDirty();
- borderGeometry_.markSourceDirty();
- updateMapItem();
+ markSourceDirtyAndUpdate();
emit centerChanged(center_);
}
@@ -389,7 +382,7 @@ void QDeclarativeCircleMapItem::setColor(const QColor &color)
return;
color_ = color;
dirtyMaterial_ = true;
- updateMapItem();
+ update();
emit colorChanged(color_);
}
@@ -411,9 +404,7 @@ void QDeclarativeCircleMapItem::setRadius(qreal radius)
return;
radius_ = radius;
- geometry_.markSourceDirty();
- borderGeometry_.markSourceDirty();
- updateMapItem();
+ markSourceDirtyAndUpdate();
emit radiusChanged(radius);
}
@@ -459,7 +450,7 @@ QSGNode *QDeclarativeCircleMapItem::updateMapItemPaintNode(QSGNode *oldNode, Upd
/*!
\internal
*/
-void QDeclarativeCircleMapItem::updateMapItem()
+void QDeclarativeCircleMapItem::updatePolish()
{
if (!map() || !center().isValid())
return;
@@ -501,7 +492,6 @@ void QDeclarativeCircleMapItem::updateMapItem()
}
setPositionOnMap(circlePath_.at(0), geometry_.firstPointOffset());
- update();
}
/*!
@@ -541,7 +531,7 @@ void QDeclarativeCircleMapItem::afterViewportChanged(const QGeoMapViewportChange
geometry_.markScreenDirty();
borderGeometry_.markScreenDirty();
- updateMapItem();
+ polishAndUpdate();
}
/*!
diff --git a/src/imports/location/qdeclarativecirclemapitem_p.h b/src/imports/location/qdeclarativecirclemapitem_p.h
index fb786e08..9b142309 100644
--- a/src/imports/location/qdeclarativecirclemapitem_p.h
+++ b/src/imports/location/qdeclarativecirclemapitem_p.h
@@ -56,8 +56,6 @@
QT_BEGIN_NAMESPACE
-class QDeclarativeGeoMapQuickItem;
-
class QGeoMapCircleGeometry : public QGeoMapPolygonGeometry
{
public:
@@ -101,10 +99,10 @@ Q_SIGNALS:
protected:
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
+ void updatePolish() Q_DECL_OVERRIDE;
protected Q_SLOTS:
- virtual void updateMapItem() Q_DECL_OVERRIDE;
- void updateMapItemAssumeDirty();
+ void markSourceDirtyAndUpdate();
virtual void afterViewportChanged(const QGeoMapViewportChangeEvent &event) Q_DECL_OVERRIDE;
private:
diff --git a/src/imports/location/qdeclarativegeomap.cpp b/src/imports/location/qdeclarativegeomap.cpp
index 2b76d318..d9981b69 100644
--- a/src/imports/location/qdeclarativegeomap.cpp
+++ b/src/imports/location/qdeclarativegeomap.cpp
@@ -1227,6 +1227,10 @@ void QDeclarativeGeoMap::fitViewportToMapItemsRefine(bool refine)
continue;
}
}
+ // Force map items to update immediately. Needed to ensure correct item size and positions
+ // when recursively calling this function.
+ if (item->isPolishScheduled())
+ item->updatePolish();
topLeftX = item->position().x();
topLeftY = item->position().y();
diff --git a/src/imports/location/qdeclarativegeomapitembase.cpp b/src/imports/location/qdeclarativegeomapitembase.cpp
index e76c11b0..cde00abf 100644
--- a/src/imports/location/qdeclarativegeomapitembase.cpp
+++ b/src/imports/location/qdeclarativegeomapitembase.cpp
@@ -39,6 +39,7 @@
#include <QtQml/QQmlInfo>
#include <QtQuick/QSGOpacityNode>
#include <QtQuick/private/qquickmousearea_p.h>
+#include <QtQuick/private/qquickitem_p.h>
QT_BEGIN_NAMESPACE
@@ -248,6 +249,17 @@ QSGNode *QDeclarativeGeoMapItemBase::updateMapItemPaintNode(QSGNode *oldNode, Up
return 0;
}
+bool QDeclarativeGeoMapItemBase::isPolishScheduled() const
+{
+ return QQuickItemPrivate::get(this)->polishScheduled;
+}
+
+void QDeclarativeGeoMapItemBase::polishAndUpdate()
+{
+ polish();
+ update();
+}
+
#include "moc_qdeclarativegeomapitembase_p.cpp"
diff --git a/src/imports/location/qdeclarativegeomapitembase_p.h b/src/imports/location/qdeclarativegeomapitembase_p.h
index d4ad34c5..c7793fbd 100644
--- a/src/imports/location/qdeclarativegeomapitembase_p.h
+++ b/src/imports/location/qdeclarativegeomapitembase_p.h
@@ -89,13 +89,14 @@ public:
virtual QSGNode *updateMapItemPaintNode(QSGNode *, UpdatePaintNodeData *);
protected Q_SLOTS:
- virtual void updateMapItem() = 0;
virtual void afterChildrenChanged();
virtual void afterViewportChanged(const QGeoMapViewportChangeEvent &event) = 0;
+ void polishAndUpdate();
protected:
float zoomLevelOpacity() const;
bool childMouseEventFilter(QQuickItem *item, QEvent *event);
+ bool isPolishScheduled() const;
private Q_SLOTS:
void baseCameraDataChanged(const QGeoCameraData &camera);
@@ -106,6 +107,8 @@ private:
QSizeF lastSize_;
QGeoCameraData lastCameraData_;
+
+ friend class QDeclarativeGeoMap;
};
QT_END_NAMESPACE
diff --git a/src/imports/location/qdeclarativegeomapquickitem.cpp b/src/imports/location/qdeclarativegeomapquickitem.cpp
index 81f88dac..ca67b183 100644
--- a/src/imports/location/qdeclarativegeomapquickitem.cpp
+++ b/src/imports/location/qdeclarativegeomapquickitem.cpp
@@ -146,8 +146,7 @@ void QDeclarativeGeoMapQuickItem::setCoordinate(const QGeoCoordinate &coordinate
coordinate_ = coordinate;
- updateMapItem();
-
+ polishAndUpdate();
emit coordinateChanged();
}
@@ -158,10 +157,11 @@ void QDeclarativeGeoMapQuickItem::setMap(QDeclarativeGeoMap *quickMap, QGeoMap *
{
QDeclarativeGeoMapItemBase::setMap(quickMap,map);
if (map && quickMap) {
- QObject::connect(quickMap, SIGNAL(heightChanged()), this, SLOT(updateMapItem()));
- QObject::connect(quickMap, SIGNAL(widthChanged()), this, SLOT(updateMapItem()));
- QObject::connect(map, SIGNAL(cameraDataChanged(QGeoCameraData)), this, SLOT(updateMapItem()));
- updateMapItem();
+ connect(quickMap, SIGNAL(heightChanged()), this, SLOT(polishAndUpdate()));
+ connect(quickMap, SIGNAL(widthChanged()), this, SLOT(polishAndUpdate()));
+ connect(map, SIGNAL(cameraDataChanged(QGeoCameraData)),
+ this, SLOT(polishAndUpdate()));
+ polishAndUpdate();
}
}
@@ -203,8 +203,7 @@ void QDeclarativeGeoMapQuickItem::setSourceItem(QQuickItem *sourceItem)
return;
sourceItem_ = sourceItem;
- updateMapItem();
-
+ polishAndUpdate();
emit sourceItemChanged();
}
@@ -249,7 +248,7 @@ void QDeclarativeGeoMapQuickItem::setAnchorPoint(const QPointF &anchorPoint)
if (anchorPoint == anchorPoint_)
return;
anchorPoint_ = anchorPoint;
- updateMapItem();
+ polishAndUpdate();
emit anchorPointChanged();
}
@@ -281,7 +280,7 @@ void QDeclarativeGeoMapQuickItem::setZoomLevel(qreal zoomLevel)
if (zoomLevel == zoomLevel_)
return;
zoomLevel_ = zoomLevel;
- updateMapItem();
+ polishAndUpdate();
emit zoomLevelChanged();
}
@@ -293,7 +292,7 @@ qreal QDeclarativeGeoMapQuickItem::zoomLevel() const
/*!
\internal
*/
-void QDeclarativeGeoMapQuickItem::updateMapItem()
+void QDeclarativeGeoMapQuickItem::updatePolish()
{
if (!quickMap() && sourceItem_) {
mapAndSourceItemSet_ = false;
@@ -311,13 +310,13 @@ void QDeclarativeGeoMapQuickItem::updateMapItem()
sourceItem_.data()->setParentItem(opacityContainer_);
sourceItem_.data()->setTransformOrigin(QQuickItem::TopLeft);
connect(sourceItem_.data(), SIGNAL(xChanged()),
- this, SLOT(updateMapItem()));
+ this, SLOT(polishAndUpdate()));
connect(sourceItem_.data(), SIGNAL(yChanged()),
- this, SLOT(updateMapItem()));
+ this, SLOT(polishAndUpdate()));
connect(sourceItem_.data(), SIGNAL(widthChanged()),
- this, SLOT(updateMapItem()));
+ this, SLOT(polishAndUpdate()));
connect(sourceItem_.data(), SIGNAL(heightChanged()),
- this, SLOT(updateMapItem()));
+ this, SLOT(polishAndUpdate()));
}
QScopedValueRollback<bool> rollback(updatingGeometry_);
@@ -330,7 +329,6 @@ void QDeclarativeGeoMapQuickItem::updateMapItem()
setWidth(sourceItem_.data()->width());
setHeight(sourceItem_.data()->height());
setPositionOnMap(coordinate(), scaleFactor() * anchorPoint_);
- update();
}
/*!
diff --git a/src/imports/location/qdeclarativegeomapquickitem_p.h b/src/imports/location/qdeclarativegeomapquickitem_p.h
index af9f6ec6..0410f060 100644
--- a/src/imports/location/qdeclarativegeomapquickitem_p.h
+++ b/src/imports/location/qdeclarativegeomapquickitem_p.h
@@ -90,9 +90,9 @@ Q_SIGNALS:
protected:
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
+ void updatePolish() Q_DECL_OVERRIDE;
protected Q_SLOTS:
- virtual void updateMapItem() Q_DECL_OVERRIDE;
virtual void afterChildrenChanged() Q_DECL_OVERRIDE;
virtual void afterViewportChanged(const QGeoMapViewportChangeEvent &event) Q_DECL_OVERRIDE;
diff --git a/src/imports/location/qdeclarativepolygonmapitem.cpp b/src/imports/location/qdeclarativepolygonmapitem.cpp
index 9a71614f..6fdef816 100644
--- a/src/imports/location/qdeclarativepolygonmapitem.cpp
+++ b/src/imports/location/qdeclarativepolygonmapitem.cpp
@@ -332,7 +332,7 @@ QDeclarativePolygonMapItem::QDeclarativePolygonMapItem(QQuickItem *parent)
void QDeclarativePolygonMapItem::handleBorderUpdated()
{
borderGeometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
}
QDeclarativePolygonMapItem::~QDeclarativePolygonMapItem()
@@ -367,7 +367,7 @@ void QDeclarativePolygonMapItem::setMap(QDeclarativeGeoMap *quickMap, QGeoMap *m
if (map) {
geometry_.markSourceDirty();
borderGeometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
}
}
@@ -423,7 +423,7 @@ void QDeclarativePolygonMapItem::setPath(const QJSValue &value)
geometry_.markSourceDirty();
borderGeometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
emit pathChanged();
}
@@ -441,7 +441,7 @@ void QDeclarativePolygonMapItem::addCoordinate(const QGeoCoordinate &coordinate)
geometry_.markSourceDirty();
borderGeometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
emit pathChanged();
}
@@ -465,7 +465,7 @@ void QDeclarativePolygonMapItem::removeCoordinate(const QGeoCoordinate &coordina
geometry_.markSourceDirty();
borderGeometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
emit pathChanged();
}
@@ -489,7 +489,7 @@ void QDeclarativePolygonMapItem::setColor(const QColor &color)
color_ = color;
dirtyMaterial_ = true;
- updateMapItem();
+ update();
emit colorChanged(color_);
}
@@ -519,7 +519,7 @@ QSGNode *QDeclarativePolygonMapItem::updateMapItemPaintNode(QSGNode *oldNode, Up
/*!
\internal
*/
-void QDeclarativePolygonMapItem::updateMapItem()
+void QDeclarativePolygonMapItem::updatePolish()
{
if (!map() || path_.count() == 0)
return;
@@ -546,7 +546,6 @@ void QDeclarativePolygonMapItem::updateMapItem()
setHeight(combined.height());
setPositionOnMap(path_.at(0), -1 * geometry_.sourceBoundingBox().topLeft());
- update();
}
/*!
@@ -582,7 +581,7 @@ void QDeclarativePolygonMapItem::afterViewportChanged(const QGeoMapViewportChang
borderGeometry_.setPreserveGeometry(true, borderGeometry_.geoLeftBound());
geometry_.markScreenDirty();
borderGeometry_.markScreenDirty();
- updateMapItem();
+ polishAndUpdate();
}
/*!
@@ -639,7 +638,7 @@ void QDeclarativePolygonMapItem::geometryChanged(const QRectF &newGeometry, cons
borderGeometry_.setPreserveGeometry(true, leftBoundCoord);
geometry_.markSourceDirty();
borderGeometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
emit pathChanged();
}
diff --git a/src/imports/location/qdeclarativepolygonmapitem_p.h b/src/imports/location/qdeclarativepolygonmapitem_p.h
index 86a9ec4c..8b803b1d 100644
--- a/src/imports/location/qdeclarativepolygonmapitem_p.h
+++ b/src/imports/location/qdeclarativepolygonmapitem_p.h
@@ -111,9 +111,9 @@ Q_SIGNALS:
protected:
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
+ void updatePolish() Q_DECL_OVERRIDE;
protected Q_SLOTS:
- virtual void updateMapItem() Q_DECL_OVERRIDE;
void handleBorderUpdated();
virtual void afterViewportChanged(const QGeoMapViewportChangeEvent &event) Q_DECL_OVERRIDE;
diff --git a/src/imports/location/qdeclarativepolylinemapitem.cpp b/src/imports/location/qdeclarativepolylinemapitem.cpp
index 9201701c..71a205d3 100644
--- a/src/imports/location/qdeclarativepolylinemapitem.cpp
+++ b/src/imports/location/qdeclarativepolylinemapitem.cpp
@@ -472,7 +472,7 @@ void QDeclarativePolylineMapItem::updateAfterLinePropertiesChanged()
{
// mark dirty just in case we're a width change
geometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
}
/*!
@@ -483,7 +483,7 @@ void QDeclarativePolylineMapItem::setMap(QDeclarativeGeoMap *quickMap, QGeoMap *
QDeclarativeGeoMapItemBase::setMap(quickMap,map);
if (map) {
geometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
}
}
@@ -546,7 +546,7 @@ void QDeclarativePolylineMapItem::setPathFromGeoList(const QList<QGeoCoordinate>
path_ = path;
geometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
emit pathChanged();
}
@@ -563,7 +563,7 @@ void QDeclarativePolylineMapItem::addCoordinate(const QGeoCoordinate &coordinate
path_.append(coordinate);
geometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
emit pathChanged();
}
@@ -586,7 +586,7 @@ void QDeclarativePolylineMapItem::removeCoordinate(const QGeoCoordinate &coordin
path_.removeAt(index);
geometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
emit pathChanged();
}
@@ -652,7 +652,7 @@ void QDeclarativePolylineMapItem::geometryChanged(const QRectF &newGeometry, con
+ newCoordinate.longitude() - firstLongitude));
geometry_.setPreserveGeometry(true, leftBoundCoord);
geometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
emit pathChanged();
}
@@ -688,13 +688,13 @@ void QDeclarativePolylineMapItem::afterViewportChanged(const QGeoMapViewportChan
}
geometry_.setPreserveGeometry(true, geometry_.geoLeftBound());
geometry_.markScreenDirty();
- updateMapItem();
+ polishAndUpdate();
}
/*!
\internal
*/
-void QDeclarativePolylineMapItem::updateMapItem()
+void QDeclarativePolylineMapItem::updatePolish()
{
if (!map() || path_.count() == 0)
return;
@@ -709,7 +709,6 @@ void QDeclarativePolylineMapItem::updateMapItem()
setHeight(geometry_.sourceBoundingBox().height());
setPositionOnMap(path_.at(0), -1 * geometry_.sourceBoundingBox().topLeft());
- update();
}
/*!
diff --git a/src/imports/location/qdeclarativepolylinemapitem_p.h b/src/imports/location/qdeclarativepolylinemapitem_p.h
index 6eeeb11f..a7b7f167 100644
--- a/src/imports/location/qdeclarativepolylinemapitem_p.h
+++ b/src/imports/location/qdeclarativepolylinemapitem_p.h
@@ -132,9 +132,9 @@ Q_SIGNALS:
protected:
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
void setPathFromGeoList(const QList<QGeoCoordinate> &path);
+ void updatePolish() Q_DECL_OVERRIDE;
protected Q_SLOTS:
- virtual void updateMapItem() Q_DECL_OVERRIDE;
void updateAfterLinePropertiesChanged();
virtual void afterViewportChanged(const QGeoMapViewportChangeEvent &event) Q_DECL_OVERRIDE;
diff --git a/src/imports/location/qdeclarativerectanglemapitem.cpp b/src/imports/location/qdeclarativerectanglemapitem.cpp
index 2dbb630b..c28bcf3e 100644
--- a/src/imports/location/qdeclarativerectanglemapitem.cpp
+++ b/src/imports/location/qdeclarativerectanglemapitem.cpp
@@ -177,9 +177,9 @@ QDeclarativeRectangleMapItem::QDeclarativeRectangleMapItem(QQuickItem *parent)
{
setFlag(ItemHasContents, true);
QObject::connect(&border_, SIGNAL(colorChanged(QColor)),
- this, SLOT(updateMapItemAssumeDirty()));
+ this, SLOT(markSourceDirtyAndUpdate()));
QObject::connect(&border_, SIGNAL(widthChanged(qreal)),
- this, SLOT(updateMapItemAssumeDirty()));
+ this, SLOT(markSourceDirtyAndUpdate()));
}
QDeclarativeRectangleMapItem::~QDeclarativeRectangleMapItem()
@@ -192,11 +192,8 @@ QDeclarativeRectangleMapItem::~QDeclarativeRectangleMapItem()
void QDeclarativeRectangleMapItem::setMap(QDeclarativeGeoMap *quickMap, QGeoMap *map)
{
QDeclarativeGeoMapItemBase::setMap(quickMap,map);
- if (map) {
- geometry_.markSourceDirty();
- borderGeometry_.markSourceDirty();
- updateMapItem();
- }
+ if (map)
+ markSourceDirtyAndUpdate();
}
/*!
@@ -229,9 +226,7 @@ void QDeclarativeRectangleMapItem::setTopLeft(const QGeoCoordinate &topLeft)
topLeft_ = topLeft;
- geometry_.markSourceDirty();
- borderGeometry_.markSourceDirty();
- updateMapItem();
+ markSourceDirtyAndUpdate();
emit topLeftChanged(topLeft_);
}
@@ -243,11 +238,11 @@ QGeoCoordinate QDeclarativeRectangleMapItem::topLeft()
/*!
\internal
*/
-void QDeclarativeRectangleMapItem::updateMapItemAssumeDirty()
+void QDeclarativeRectangleMapItem::markSourceDirtyAndUpdate()
{
geometry_.markSourceDirty();
borderGeometry_.markSourceDirty();
- updateMapItem();
+ polishAndUpdate();
}
/*!
@@ -263,9 +258,7 @@ void QDeclarativeRectangleMapItem::setBottomRight(const QGeoCoordinate &bottomRi
bottomRight_ = bottomRight;
- geometry_.markSourceDirty();
- borderGeometry_.markSourceDirty();
- updateMapItem();
+ markSourceDirtyAndUpdate();
emit bottomRightChanged(bottomRight_);
}
@@ -291,7 +284,7 @@ void QDeclarativeRectangleMapItem::setColor(const QColor &color)
return;
color_ = color;
dirtyMaterial_ = true;
- updateMapItem();
+ polishAndUpdate();
emit colorChanged(color_);
}
@@ -333,7 +326,7 @@ QSGNode *QDeclarativeRectangleMapItem::updateMapItemPaintNode(QSGNode *oldNode,
/*!
\internal
*/
-void QDeclarativeRectangleMapItem::updateMapItem()
+void QDeclarativeRectangleMapItem::updatePolish()
{
if (!map() || !topLeft().isValid() || !bottomRight().isValid())
return;
@@ -368,7 +361,6 @@ void QDeclarativeRectangleMapItem::updateMapItem()
}
setPositionOnMap(pathClosed.at(0), geometry_.firstPointOffset());
- update();
}
/*!
@@ -404,7 +396,7 @@ void QDeclarativeRectangleMapItem::afterViewportChanged(const QGeoMapViewportCha
borderGeometry_.setPreserveGeometry(true, borderGeometry_.geoLeftBound());
geometry_.markScreenDirty();
borderGeometry_.markScreenDirty();
- updateMapItem();
+ polishAndUpdate();
}
/*!
@@ -448,9 +440,7 @@ void QDeclarativeRectangleMapItem::geometryChanged(const QRectF &newGeometry, co
bottomRight_ = newBottomRight;
geometry_.setPreserveGeometry(true, newTopLeft);
borderGeometry_.setPreserveGeometry(true, newTopLeft);
- geometry_.markSourceDirty();
- borderGeometry_.markSourceDirty();
- updateMapItem();
+ markSourceDirtyAndUpdate();
emit topLeftChanged(topLeft_);
emit bottomRightChanged(bottomRight_);
}
diff --git a/src/imports/location/qdeclarativerectanglemapitem_p.h b/src/imports/location/qdeclarativerectanglemapitem_p.h
index d4c319ab..fb9936b0 100644
--- a/src/imports/location/qdeclarativerectanglemapitem_p.h
+++ b/src/imports/location/qdeclarativerectanglemapitem_p.h
@@ -105,10 +105,10 @@ Q_SIGNALS:
protected:
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
+ void updatePolish() Q_DECL_OVERRIDE;
protected Q_SLOTS:
- virtual void updateMapItem() Q_DECL_OVERRIDE;
- void updateMapItemAssumeDirty();
+ void markSourceDirtyAndUpdate();
virtual void afterViewportChanged(const QGeoMapViewportChangeEvent &event) Q_DECL_OVERRIDE;
private:
diff --git a/tests/auto/declarative_ui/tst_map_error.qml b/tests/auto/declarative_ui/tst_map_error.qml
index aaa58e6c..c102db6e 100644
--- a/tests/auto/declarative_ui/tst_map_error.qml
+++ b/tests/auto/declarative_ui/tst_map_error.qml
@@ -100,7 +100,7 @@ Item {
mouseClick(map, 50, 50)
mouseClick(map, 50, 50)
mouseClick(map, 50, 50)
- compare(map.mouseClickedSpy.count, 3)
+ tryCompare(map.mouseClickedSpy, "count", 3)
}
function test_map_clicked_wiht_no_plugin()
diff --git a/tests/auto/declarative_ui/tst_map_flick.qml b/tests/auto/declarative_ui/tst_map_flick.qml
index 4094a7c7..e225480d 100644
--- a/tests/auto/declarative_ui/tst_map_flick.qml
+++ b/tests/auto/declarative_ui/tst_map_flick.qml
@@ -288,6 +288,7 @@ Item {
{
map.center.latitude = 50
map.center.longitude = 50
+ waitForRendering(map)
mousePress(page, 0, 0)
for (var i = 0; i < 50; i += 5) {
wait(20)
diff --git a/tests/auto/declarative_ui/tst_map_item.qml b/tests/auto/declarative_ui/tst_map_item.qml
index 32de8efd..5be8896f 100644
--- a/tests/auto/declarative_ui/tst_map_item.qml
+++ b/tests/auto/declarative_ui/tst_map_item.qml
@@ -257,37 +257,40 @@ Item {
map.center = preMapRect.topLeft
var point = map.fromCoordinate(preMapRect.topLeft)
mouseClick(map, point.x + 5, point.y + 5)
- compare(preMapRectClicked.count, 1)
+ tryCompare(preMapRectClicked, "count", 1)
mouseClick(map, 1, 1) // no item hit
- compare(preMapRectClicked.count, 1)
+ tryCompare(preMapRectClicked, "count", 1)
compare(preMapCircleClicked.count, 0)
// click circle, overlaps and is above rect
map.center = preMapCircle.center
+ verify(waitForRendering(map))
point = map.fromCoordinate(preMapCircle.center)
mouseClick(map, point.x - 5, point.y - 5)
- compare(preMapRectClicked.count, 1)
+ tryCompare(preMapRectClicked, "count", 1)
compare(preMapCircleClicked.count, 1)
// click within circle bounding rect but not inside the circle geometry
map.center = preMapCircle.center.atDistanceAndAzimuth(preMapCircle.radius, -45)
mouseClick(map, preMapCircle.x + 4, preMapCircle.y + 4)
- compare(preMapRectClicked.count, 2)
+ tryCompare(preMapRectClicked, "count", 2)
compare(preMapCircleClicked.count, 1)
// click quick item
compare(preMapQuickItemClicked.count, 0)
map.center = preMapQuickItem.coordinate
+ verify(waitForRendering(map))
point = map.fromCoordinate(preMapQuickItem.coordinate)
mouseClick(map, point.x + 5, point.y + 5)
- compare(preMapQuickItemClicked.count, 1)
+ tryCompare(preMapQuickItemClicked, "count", 1)
// click polygon
compare (preMapPolygonClicked.count, 0)
map.center = preMapPolygon.path[1]
+ verify(waitForRendering(map))
point = map.fromCoordinate(preMapPolygon.path[1])
mouseClick(map, point.x - 5, point.y)
- compare(preMapPolygonClicked.count, 1)
+ tryCompare(preMapPolygonClicked, "count", 1)
// remove items and repeat clicks to verify they are gone
map.clearMapItems()
@@ -328,48 +331,54 @@ Item {
compare (map.mapItems.length, 6)
visualInspectionPoint()
map.center = preMapRect.topLeft
+ verify(waitForRendering(map))
point = map.fromCoordinate(preMapRect.topLeft)
mouseClick(map, point.x + 5, point.y + 5)
- compare(preMapRectClicked.count, 1)
+ tryCompare(preMapRectClicked, "count", 1)
map.center = preMapCircle.center
+ verify(waitForRendering(map))
point = map.fromCoordinate(preMapCircle.center)
mouseClick(map, point.x - 5, point.y - 5)
- compare(preMapRectClicked.count, 1)
+ tryCompare(preMapRectClicked, "count", 1)
compare(preMapCircleClicked.count, 1)
map.center = preMapCircle.center.atDistanceAndAzimuth(preMapCircle.radius, -45)
mouseClick(map, preMapCircle.x + 4, preMapCircle.y + 4)
- compare(preMapRectClicked.count, 2)
+ tryCompare(preMapRectClicked, "count", 2)
compare(preMapCircleClicked.count, 1)
compare(preMapQuickItemClicked.count, 0)
map.center = preMapQuickItem.coordinate
+ verify(waitForRendering(map))
point = map.fromCoordinate(preMapQuickItem.coordinate)
mouseClick(map, point.x + 5, point.y + 5)
- compare(preMapQuickItemClicked.count, 1)
+ tryCompare(preMapQuickItemClicked, "count", 1)
map.center = preMapPolygon.path[1]
+ verify(waitForRendering(map))
point = map.fromCoordinate(preMapPolygon.path[1])
mouseClick(map, point.x - 5, point.y)
- compare(preMapPolygonClicked.count, 1)
+ tryCompare(preMapPolygonClicked, "count", 1)
// item clips to map. not sure if this is sensible test
map.addMapItem(extMapCircle)
map.center = extMapCircle.center
+ verify(waitForRendering(map))
visualInspectionPoint();
point = map.fromCoordinate(extMapCircle.center)
mouseClick(map, point.x, point.y)
- compare(extMapCircleClicked.count, 1)
+ tryCompare(extMapCircleClicked, "count", 1)
mouseClick(map, point.x, -5)
- compare(extMapCircleClicked.count, 1)
+ tryCompare(extMapCircleClicked, "count", 1)
map.removeMapItem(extMapCircle)
map.addMapItem(extMapQuickItem)
map.center = extMapQuickItem.coordinate
+ verify(waitForRendering(map))
visualInspectionPoint();
point = map.fromCoordinate(extMapQuickItem.coordinate)
mouseClick(map, point.x + 5, point.y + 5)
- compare(extMapQuickItemClicked.count, 1)
+ tryCompare(extMapQuickItemClicked, "count", 1)
mouseClick(map, map.width + 5, point.y + 5)
- compare(extMapQuickItemClicked.count, 1)
+ tryCompare(extMapQuickItemClicked, "count", 1)
map.removeMapItem(extMapQuickItem)
}
@@ -378,6 +387,8 @@ Item {
// basic drags, drag rectangle
compare (preMapRectActiveChanged.count, 0)
map.center = preMapRect.topLeft
+ verify(waitForRendering(map))
+
var i
var point = map.fromCoordinate(preMapRect.topLeft)
var targetCoordinate = map.toCoordinate(51, 51)
@@ -400,6 +411,7 @@ Item {
// drag circle
compare (preMapCircleActiveChanged.count, 0)
map.center = preMapCircle.center
+ verify(waitForRendering(map))
point = map.fromCoordinate(preMapCircle.center)
targetCoordinate = map.toCoordinate(51, 51)
mousePress(map, point.x, point.y)
@@ -418,6 +430,7 @@ Item {
// drag quick item
compare (preMapQuickItemActiveChanged.count, 0)
map.center = preMapQuickItem.coordinate
+ verify(waitForRendering(map))
point = map.fromCoordinate(preMapQuickItem.coordinate)
targetCoordinate = map.toCoordinate(51, 51)
mousePress(map, point.x + 5, point.y + 5)
diff --git a/tests/auto/declarative_ui/tst_map_item_details.qml b/tests/auto/declarative_ui/tst_map_item_details.qml
index b4468301..20849079 100644
--- a/tests/auto/declarative_ui/tst_map_item_details.qml
+++ b/tests/auto/declarative_ui/tst_map_item_details.qml
@@ -41,7 +41,11 @@ Item {
x: 0; y: 0;
width: 240
height: 240
- Plugin { id: testPlugin; name : "qmlgeo.test.plugin"; allowExperimental: true }
+ Plugin { id: testPlugin
+ name : "qmlgeo.test.plugin"
+ allowExperimental: true
+ parameters: [ PluginParameter { name: "finishRequestImmediately"; value: true}]
+ }
property variant mapDefaultCenter: QtPositioning.coordinate(20, 20)
@@ -327,8 +331,9 @@ Item {
verify(extMapPolygon0.path.length == 0)
extMapPolygon.addCoordinate(polyCoordinate)
verify(extMapPolygon.path.length == 3)
+ verify(waitForRendering(map))
mouseClick(map, point.x - 5, point.y)
- compare(extMapPolygonClicked.count, 1)
+ tryCompare(extMapPolygonClicked, "count", 1)
extMapPolygon.path[0].latitude = 10
verify(extMapPolygon.path[0].latitude, 10)
@@ -427,6 +432,7 @@ Item {
verify(point.x > map.width / 2.0)
// move item edge onto dateline
extMapRectDateline.topLeft.longitude = datelineCoordinate.longitude
+ verify(waitForRendering(map))
point = map.fromCoordinate(extMapRectDateline.topLeft)
verify(point.x == map.width / 2.0)
// drag item back onto dateline
@@ -450,6 +456,7 @@ Item {
point = map.fromCoordinate(extMapCircleDateline.center)
verify(point.x == map.width / 2.0)
extMapCircleDateline.center.longitude = datelineCoordinateRight.longitude
+ verify(waitForRendering(map))
point = map.fromCoordinate(extMapCircleDateline.center)
verify(point.x > map.width / 2.0)
mousePress(map, point.x, point.y)
@@ -469,6 +476,7 @@ Item {
point = map.fromCoordinate(extMapQuickItemDateline.coordinate)
verify(point.x < map.width / 2.0)
extMapQuickItemDateline.coordinate.longitude = datelineCoordinateRight.longitude
+ verify(waitForRendering(map))
point = map.fromCoordinate(extMapQuickItemDateline.coordinate)
verify(point.x > map.width / 2.0)
mousePress(map, point.x + 5, point.y + 5)
@@ -510,6 +518,7 @@ Item {
path = extMapPolygonDateline.path;
path[3].longitude = datelineCoordinate.longitude;
extMapPolygonDateline.path = path;
+ verify(waitForRendering(map))
point = map.fromCoordinate(extMapPolygonDateline.path[3])
verify(point.x == map.width / 2.0)
mousePress(map, point.x + 5, point.y - 5)
@@ -518,6 +527,7 @@ Item {
mouseMove(map, point.x + 5 - i, point.y - 5 )
}
mouseRelease(map, point.x + 5 - i, point.y - 5)
+ verify(waitForRendering(map,10000))
point = map.fromCoordinate(extMapPolygonDateline.path[0])
verify(point.x < map.width / 2.0)
point = map.fromCoordinate(extMapPolygonDateline.path[1])
@@ -596,6 +606,7 @@ Item {
// rectangle
map.addMapItem(extMapRectEdge)
+ verify(waitForRendering(map))
verify(extMapRectEdge.topLeft.longitude == -15)
verify(extMapRectEdge.bottomRight.longitude == -5)
var point = map.fromCoordinate(extMapRectEdge.topLeft)
@@ -650,6 +661,7 @@ Item {
// quickitem
map.addMapItem(extMapQuickItemEdge)
map.center = datelineCoordinate
+ verify(waitForRendering(map))
verify(extMapQuickItemEdge.coordinate.longitude == -15)
point = map.fromCoordinate(extMapQuickItemEdge.coordinate)
verify(point.x < map.width)
@@ -671,6 +683,7 @@ Item {
// polygon
map.center = datelineCoordinate
map.addMapItem(extMapPolygonEdge)
+ verify(waitForRendering(map))
verify(extMapPolygonEdge.path[0].longitude == -15)
verify(extMapPolygonEdge.path[1].longitude == -5)
verify(extMapPolygonEdge.path[2].longitude == -5)
diff --git a/tests/auto/declarative_ui/tst_map_item_fit_viewport.qml b/tests/auto/declarative_ui/tst_map_item_fit_viewport.qml
index 8671d05d..b3ac1d8f 100644
--- a/tests/auto/declarative_ui/tst_map_item_fit_viewport.qml
+++ b/tests/auto/declarative_ui/tst_map_item_fit_viewport.qml
@@ -240,6 +240,7 @@ Item {
// normal case - fit viewport to items which are all already visible
verify_visibility_all_items()
map.fitViewportToMapItems()
+ verify(waitForRendering(map))
visualInspectionPoint()
verify_visibility_all_items()
}
@@ -577,6 +578,7 @@ Item {
map.addMapItem(preMapPolygon)
map.addMapItem(preMapPolyline)
map.addMapItem(preMapRoute)
+ verify(waitForRendering(map))
compare (map.mapItems.length, 6)
calculate_bounds()
}
diff --git a/tests/auto/declarative_ui/tst_map_mouse.qml b/tests/auto/declarative_ui/tst_map_mouse.qml
index fe02f81d..57cde142 100644
--- a/tests/auto/declarative_ui/tst_map_mouse.qml
+++ b/tests/auto/declarative_ui/tst_map_mouse.qml
@@ -267,25 +267,25 @@ Item {
compare(mouseUpperClickedSpy.count, 0)
mouseUpper.enabled = true
mouseClick(map, 5, 25)
- compare(mouseUpperClickedSpy.count, 1)
+ tryCompare(mouseUpperClickedSpy, "count", 1)
compare(mouseUpperEnabledChangedSpy.count, 2)
// when overlapping are is disabled, the event should flow through
compare(mouseOverlapperClickedSpy.count, 0)
mouseClick(map, 55, 25)
- compare(mouseUpperClickedSpy.count, 1)
+ tryCompare(mouseUpperClickedSpy, "count", 1)
compare(mouseOverlapperClickedSpy.count, 1)
mouseOverlapper.enabled = false
compare(mouseOverlapperEnabledChangedSpy.count, 1)
compare(mouseOverlapper.enabled, false)
mouseClick(map, 55, 25)
- compare(mouseOverlapperClickedSpy.count, 1)
+ tryCompare(mouseOverlapperClickedSpy, "count", 1)
compare(mouseUpperClickedSpy.count, 2)
// re-enable and verify that still works
mouseOverlapper.enabled = true
compare(mouseOverlapperEnabledChangedSpy.count, 2)
compare(mouseOverlapper.enabled, true)
mouseClick(map, 55, 25)
- compare(mouseOverlapperClickedSpy.count, 2) // should consume again
+ tryCompare(mouseOverlapperClickedSpy, "count", 2) // should consume again
compare(mouseUpperClickedSpy.count, 2)
}
@@ -338,7 +338,7 @@ Item {
mouseUpper.acceptedButtons = Qt.LeftButton
compare(mouseUpperAcceptedButtonsChangedSpy.count, 2)
mouseClick(map, 5, 25)
- compare(mouseUpperClickedSpy.count, 1)
+ tryCompare(mouseUpperClickedSpy, "count", 1)
}
function test_basic_position_changed() {
@@ -574,40 +574,40 @@ Item {
// mouse click with unaccepted buttons should not cause click
mouseUpper.acceptedButtons = Qt.LeftButton
mouseClick(map, 5, 25, Qt.RightButton, Qt.AltModifier)
- compare(mouseUpperClickedSpy.count, 1)
+ tryCompare(mouseUpperClickedSpy, "count", 1)
compare(mouseLowerClickedSpy.count, 0)
compare(mouseOverlapperClickedSpy.count, 0)
mouseClick(map, 5, 25)
- compare(mouseUpperClickedSpy.count, 2)
+ tryCompare(mouseUpperClickedSpy, "count", 2)
compare(mouseLowerClickedSpy.count, 0)
compare(mouseOverlapperClickedSpy.count, 0)
compare(mouseUpper.lastModifiers, Qt.NoModifier)
compare(mouseUpper.lastButton, Qt.LeftButton)
mouseClick(map, 5, 55)
- compare(mouseUpperClickedSpy.count, 2)
+ tryCompare(mouseUpperClickedSpy, "count", 2)
compare(mouseLowerClickedSpy.count, 1)
compare(mouseOverlapperClickedSpy.count, 0)
mouseClick(map, 5, 55)
- compare(mouseUpperClickedSpy.count, 2)
+ tryCompare(mouseUpperClickedSpy,"count", 2)
compare(mouseLowerClickedSpy.count, 2)
compare(mouseOverlapperClickedSpy.count, 0)
// declaration order counts on overlap case; overlapping area
// declared later will get the events
mouseClick(map, 55, 25)
- compare(mouseUpperClickedSpy.count, 2)
+ tryCompare(mouseUpperClickedSpy, "count", 2)
compare(mouseLowerClickedSpy.count, 2)
compare(mouseOverlapperClickedSpy.count, 1)
mouseClick(map, 55, 75)
- compare(mouseUpperClickedSpy.count, 2)
+ tryCompare(mouseUpperClickedSpy, "count", 2)
compare(mouseLowerClickedSpy.count, 2)
compare(mouseOverlapperClickedSpy.count, 2)
real_click(map, 55, 25)
- compare(mouseUpperClickedSpy.count, 2)
+ tryCompare(mouseUpperClickedSpy, "count", 2)
compare(mouseLowerClickedSpy.count, 2)
compare(mouseOverlapperClickedSpy.count, 3)
real_click(map, 55, 75)
- compare(mouseUpperClickedSpy.count, 2)
+ tryCompare(mouseUpperClickedSpy, "count", 2)
compare(mouseLowerClickedSpy.count, 2)
compare(mouseOverlapperClickedSpy.count, 4)
}
@@ -621,7 +621,7 @@ Item {
compare(mouseLowerDoubleClickedSpy.count, 0)
compare(mouseOverlapperDoubleClickedSpy.count, 0)
real_double_click(map, 5, 25)
- compare(mouseUpper.lastAccepted, true)
+ tryCompare(mouseUpper, "lastAccepted", true)
compare(mouseUpper.lastButton, Qt.LeftButton)
compare(mouseUpper.lastModifiers, Qt.NoModifier)
compare(mouseUpper.lastWasHeld, false)
@@ -632,26 +632,26 @@ Item {
compare(mouseLowerDoubleClickedSpy.count, 0)
compare(mouseOverlapperDoubleClickedSpy.count, 0)
real_double_click(map, 5, 25)
- compare(mouseUpperDoubleClickedSpy.count, 2)
+ tryCompare(mouseUpperDoubleClickedSpy, "count", 2)
compare(mouseLowerDoubleClickedSpy.count, 0)
compare(mouseOverlapperDoubleClickedSpy.count, 0)
real_double_click(map, 5, 55)
- compare(mouseUpperDoubleClickedSpy.count, 2)
+ tryCompare(mouseUpperDoubleClickedSpy, "count", 2)
compare(mouseLowerDoubleClickedSpy.count, 1)
compare(mouseOverlapperDoubleClickedSpy.count, 0)
real_double_click(map, 5, 55)
- compare(mouseUpperDoubleClickedSpy.count, 2)
+ tryCompare(mouseUpperDoubleClickedSpy, "count", 2)
compare(mouseLowerDoubleClickedSpy.count, 2)
compare(mouseOverlapperDoubleClickedSpy.count, 0)
// declaration order counts on overlap case; overlapping area declared later will get the events
real_double_click(map, 55, 25)
- compare(mouseUpperDoubleClickedSpy.count, 2)
+ tryCompare(mouseUpperDoubleClickedSpy, "count", 2)
compare(mouseLowerDoubleClickedSpy.count, 2)
compare(mouseOverlapperDoubleClickedSpy.count, 1)
compare(mouseOverlapperPressedSpy.count, 2)
compare(mouseOverlapperReleasedSpy.count, 2)
real_double_click(map, 55, 75)
- compare(mouseUpperDoubleClickedSpy.count, 2)
+ tryCompare(mouseUpperDoubleClickedSpy, "count", 2)
compare(mouseLowerDoubleClickedSpy.count, 2)
compare(mouseOverlapperDoubleClickedSpy.count, 2)
compare(mouseOverlapperPressedSpy.count, 4)
@@ -659,20 +659,20 @@ Item {
// disable overlapping area and check event is delivered to the ones beneath
mouseOverlapper.enabled = false
real_double_click(map, 55, 25)
- compare(mouseUpperDoubleClickedSpy.count, 3)
+ tryCompare(mouseUpperDoubleClickedSpy, "count", 3)
compare(mouseLowerDoubleClickedSpy.count, 2)
compare(mouseOverlapperDoubleClickedSpy.count, 2)
real_double_click(map, 55, 75)
- compare(mouseUpperDoubleClickedSpy.count, 3)
+ tryCompare(mouseUpperDoubleClickedSpy, "count", 3)
compare(mouseLowerDoubleClickedSpy.count, 3)
compare(mouseOverlapperDoubleClickedSpy.count, 2)
mouseOverlapper.enabled = true
real_double_click(map, 55, 25)
- compare(mouseUpperDoubleClickedSpy.count, 3)
+ tryCompare(mouseUpperDoubleClickedSpy, "count", 3)
compare(mouseLowerDoubleClickedSpy.count, 3)
compare(mouseOverlapperDoubleClickedSpy.count, 3)
real_double_click(map, 55, 75)
- compare(mouseUpperDoubleClickedSpy.count, 3)
+ tryCompare(mouseUpperDoubleClickedSpy, "count", 3)
compare(mouseLowerDoubleClickedSpy.count, 3)
compare(mouseOverlapperDoubleClickedSpy.count, 4)
}
@@ -698,11 +698,11 @@ Item {
compare(mouseUpper.lastY, 5) // remember 20 offset of the mouse area
mouseRelease(map,5,25)
real_press_and_hold(map, 5, 55)
- compare(mouseUpperPressAndHoldSpy.count, 1)
+ tryCompare(mouseUpperPressAndHoldSpy, "count", 1)
compare(mouseLowerPressAndHoldSpy.count, 1)
compare(mouseOverlapperPressAndHoldSpy.count, 0)
real_press_and_hold(map, 55, 75)
- compare(mouseUpperPressAndHoldSpy.count, 1)
+ tryCompare(mouseUpperPressAndHoldSpy, "count", 1)
compare(mouseLowerPressAndHoldSpy.count, 1)
compare(mouseOverlapperPressAndHoldSpy.count, 1)
compare(mouseOverlapper.lastAccepted, true)
@@ -713,14 +713,14 @@ Item {
compare(mouseOverlapper.lastY, 75)
// make sure that the wasHeld is cleared
mouseClick(map, 55, 75)
- compare(mouseOverlapper.lastAccepted, true)
+ tryCompare(mouseOverlapper, "lastAccepted", true)
compare(mouseOverlapper.lastButton, Qt.LeftButton)
compare(mouseOverlapper.lastModifiers, Qt.NoModifier)
compare(mouseOverlapper.lastWasHeld, false)
compare(mouseOverlapper.lastX, 5)
compare(mouseOverlapper.lastY, 75)
real_press_and_hold(map, 55, 25)
- compare(mouseUpperPressAndHoldSpy.count, 1)
+ tryCompare(mouseUpperPressAndHoldSpy, "count", 1)
compare(mouseLowerPressAndHoldSpy.count, 1)
compare(mouseOverlapperPressAndHoldSpy.count, 2)
}