@@ -763,6 +763,8 @@ void QgsComposer::connectViewSlots()
763
763
// listen out for position updates from the QgsComposerView
764
764
connect ( mView , &QgsComposerView::cursorPosChanged, this , &QgsComposer::updateStatusCursorPos );
765
765
connect ( mView , &QgsComposerView::zoomLevelChanged, this , &QgsComposer::updateStatusZoom );
766
+
767
+ connect ( mView , &QgsComposerView::zoomLevelChanged, this , &QgsComposer::invalidateCachedRenders );
766
768
}
767
769
768
770
void QgsComposer::connectCompositionSlots ()
@@ -774,7 +776,6 @@ void QgsComposer::connectCompositionSlots()
774
776
775
777
connect ( mComposition , &QgsComposition::nameChanged, this , &QgsComposer::setWindowTitle );
776
778
connect ( mComposition , &QgsComposition::selectedItemChanged, this , &QgsComposer::showItemOptions );
777
- connect ( mComposition , &QgsComposition::itemAdded, this , &QgsComposer::compositionItemAdded );
778
779
connect ( mComposition , &QgsComposition::itemRemoved, this , &QgsComposer::deleteItem );
779
780
connect ( mComposition , &QgsComposition::paperSizeChanged, this , [ = ]
780
781
{
@@ -802,6 +803,7 @@ void QgsComposer::connectOtherSlots()
802
803
connect ( mVerticalRuler , &QgsComposerRuler::cursorPosChanged, this , &QgsComposer::updateStatusCursorPos );
803
804
// listen out for zoom updates
804
805
connect ( this , &QgsComposer::zoomLevelChanged, this , &QgsComposer::updateStatusZoom );
806
+ connect ( this , &QgsComposer::zoomLevelChanged, this , &QgsComposer::invalidateCachedRenders );
805
807
}
806
808
807
809
void QgsComposer::open ()
@@ -1007,11 +1009,15 @@ void QgsComposer::atlasFeatureChanged( QgsFeature *feature )
1007
1009
mapCanvas ()->expressionContextScope ().addVariable ( QgsExpressionContextScope::StaticVariable ( QStringLiteral ( " atlas_geometry" ), QVariant::fromValue ( atlasFeature.geometry () ), true ) );
1008
1010
}
1009
1011
1010
- void QgsComposer::compositionItemAdded ( QgsComposerItem *item )
1012
+ void QgsComposer::invalidateCachedRenders ( )
1011
1013
{
1012
- if ( item && item->type () == QgsComposerItem::ComposerMap )
1014
+ // redraw cached map items
1015
+ QList< QgsComposerMap *> maps;
1016
+ mComposition ->composerItems ( maps );
1017
+
1018
+ Q_FOREACH ( QgsComposerMap *map, maps )
1013
1019
{
1014
- connect ( this , &QgsComposer::zoomLevelChanged, static_cast < QgsComposerMap *>( item ), &QgsComposerMap::renderModeUpdateCachedImage );
1020
+ map-> invalidateCache ( );
1015
1021
}
1016
1022
}
1017
1023
0 commit comments