Skip to content

Commit eb241a6

Browse files
committed
[composer] Make sure scalebars are updated during atlas previews
1 parent 8c64fbc commit eb241a6

File tree

4 files changed

+19
-2
lines changed

4 files changed

+19
-2
lines changed

src/core/composer/qgscomposermap.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,15 @@ void QgsComposerMap::setNewAtlasFeatureExtent( const QgsRectangle& extent )
635635
emit extentChanged();
636636
}
637637

638+
void QgsComposerMap::toggleAtlasPreview()
639+
{
640+
//atlas preview has been toggled, so update item and extents
641+
mCacheUpdated = false;
642+
updateItem();
643+
emit itemChanged();
644+
emit extentChanged();
645+
}
646+
638647
QgsRectangle* QgsComposerMap::currentMapExtent()
639648
{
640649
//non-const version

src/core/composer/qgscomposermap.h

+3
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
156156
*/
157157
void setNewAtlasFeatureExtent( const QgsRectangle& extent );
158158

159+
/**Called when atlas preview is toggled, to force map item to update its extent and redraw*/
160+
void toggleAtlasPreview();
161+
159162
/**Returns a pointer to the current map extent, which is either the original user specified
160163
extent or the temporary atlas-driven feature extent depending on the current atlas state of the composition.
161164
Both a const and non-const version are included.*/

src/core/composer/qgscomposerscalebar.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ void QgsComposerScaleBar::refreshSegmentMillimeters()
164164
if ( mComposerMap )
165165
{
166166
//get extent of composer map
167-
QgsRectangle composerMapRect = mComposerMap->extent();
167+
QgsRectangle composerMapRect = *( mComposerMap->currentMapExtent() );
168168

169169
//get mm dimension of composer map
170170
QRectF composerItemRect = mComposerMap->rect();
@@ -181,7 +181,7 @@ double QgsComposerScaleBar::mapWidth() const
181181
return 0.0;
182182
}
183183

184-
QgsRectangle composerMapRect = mComposerMap->extent();
184+
QgsRectangle composerMapRect = *( mComposerMap->currentMapExtent() );
185185
if ( mUnits == MapUnits )
186186
{
187187
return composerMapRect.width();

src/core/composer/qgscomposition.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -2345,6 +2345,11 @@ bool QgsComposition::setAtlasPreviewEnabled( bool e )
23452345
}
23462346
}
23472347

2348+
if ( mAtlasComposition.composerMap() )
2349+
{
2350+
mAtlasComposition.composerMap()->toggleAtlasPreview();
2351+
}
2352+
23482353
update();
23492354
return true;
23502355
}

0 commit comments

Comments
 (0)