Skip to content

Commit 057b225

Browse files
committed
[quick] do not refresh map on click
Whenever user would click on the map (e.g. to identify a feature), the freeze and subsequent unfreeze would force map refresh even though it is not needed. A new internal flag is introduced to avoid the unnecessary map refresh in cases when map has not been moved nor zoomed.
1 parent 0a0d2e9 commit 057b225

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

src/quickgui/qgsquickmapcanvasmap.cpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ void QgsQuickMapCanvasMap::zoom( QPointF center, qreal scale )
6767
// same as zoomWithCenter (no coordinate transformations are needed)
6868
extent.scale( scale, &newCenter );
6969
mMapSettings->setExtent( extent );
70+
mNeedsRefresh = true;
7071
}
7172

7273
void QgsQuickMapCanvasMap::pan( QPointF oldPos, QPointF newPos )
@@ -86,6 +87,7 @@ void QgsQuickMapCanvasMap::pan( QPointF oldPos, QPointF newPos )
8687
extent.setYMinimum( extent.yMinimum() + dy );
8788

8889
mMapSettings->setExtent( extent );
90+
mNeedsRefresh = true;
8991
}
9092

9193
void QgsQuickMapCanvasMap::refreshMap()
@@ -257,8 +259,13 @@ void QgsQuickMapCanvasMap::setFreeze( bool freeze )
257259

258260
mFreeze = freeze;
259261

260-
if ( !mFreeze )
262+
if ( !mFreeze && mNeedsRefresh )
263+
{
261264
refresh();
265+
}
266+
267+
// we are freezing or unfreezing - either way we can reset "needs refresh"
268+
mNeedsRefresh = false;
262269

263270
emit freezeChanged();
264271
}

src/quickgui/qgsquickmapcanvasmap.h

+1
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ class QUICK_EXPORT QgsQuickMapCanvasMap : public QQuickItem
196196
QTimer mRefreshTimer;
197197
bool mDirty = false;
198198
bool mFreeze = false;
199+
bool mNeedsRefresh = false; //!< Whether refresh is needed after unfreezing
199200
QList<QMetaObject::Connection> mLayerConnections;
200201
QTimer mMapUpdateTimer;
201202
bool mIncrementalRendering = false;

0 commit comments

Comments
 (0)