When temporal range changes we must invalidate the previous labeling

solution if any time-enabled vector layers have labels enabled

Fixes #45160
This commit is contained in:
Nyall Dawson 2022-02-01 16:45:58 +10:00
parent e0e611e5a4
commit d61cab28c1

View File

@ -888,17 +888,30 @@ void QgsMapCanvas::clearTemporalCache()
{
if ( mCache )
{
bool invalidateLabels = false;
const QList<QgsMapLayer *> layerList = mapSettings().layers();
for ( QgsMapLayer *layer : layerList )
{
if ( layer->temporalProperties() && layer->temporalProperties()->isActive() )
{
if ( QgsVectorLayer *vl = qobject_cast< QgsVectorLayer * >( layer ) )
{
if ( vl->labelsEnabled() || vl->diagramsEnabled() )
invalidateLabels = true;
}
if ( layer->temporalProperties()->flags() & QgsTemporalProperty::FlagDontInvalidateCachedRendersWhenRangeChanges )
continue;
mCache->invalidateCacheForLayer( layer );
}
}
if ( invalidateLabels )
{
mCache->clearCacheImage( QStringLiteral( "_labels_" ) );
mCache->clearCacheImage( QStringLiteral( "_preview_labels_" ) );
}
}
}
@ -906,17 +919,30 @@ void QgsMapCanvas::clearElevationCache()
{
if ( mCache )
{
bool invalidateLabels = false;
const QList<QgsMapLayer *> layerList = mapSettings().layers();
for ( QgsMapLayer *layer : layerList )
{
if ( layer->elevationProperties() && layer->elevationProperties()->hasElevation() )
{
if ( QgsVectorLayer *vl = qobject_cast< QgsVectorLayer * >( layer ) )
{
if ( vl->labelsEnabled() || vl->diagramsEnabled() )
invalidateLabels = true;
}
if ( layer->elevationProperties()->flags() & QgsMapLayerElevationProperties::FlagDontInvalidateCachedRendersWhenRangeChanges )
continue;
mCache->invalidateCacheForLayer( layer );
}
}
if ( invalidateLabels )
{
mCache->clearCacheImage( QStringLiteral( "_labels_" ) );
mCache->clearCacheImage( QStringLiteral( "_preview_labels_" ) );
}
}
}