mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
Use a clone of the renderer for attribute table model
Fixes potential crash
This commit is contained in:
parent
a874faf6a3
commit
dfe0cbafad
@ -408,16 +408,16 @@ void QgsAttributeTableFilterModel::generateListOfVisibleFeatures()
|
||||
QgsRectangle rect = mCanvas->mapSettings().mapToLayerCoordinates( layer(), mCanvas->extent() );
|
||||
QgsRenderContext renderContext;
|
||||
renderContext.expressionContext().appendScopes( QgsExpressionContextUtils::globalProjectLayerScopes( layer() ) );
|
||||
QgsFeatureRenderer *renderer = layer()->renderer();
|
||||
|
||||
mFilteredFeatures.clear();
|
||||
|
||||
if ( !renderer )
|
||||
if ( !layer()->renderer() )
|
||||
{
|
||||
QgsDebugMsg( "Cannot get renderer" );
|
||||
return;
|
||||
}
|
||||
|
||||
std::unique_ptr< QgsFeatureRenderer > renderer( layer()->renderer()->clone() );
|
||||
|
||||
const QgsMapSettings &ms = mCanvas->mapSettings();
|
||||
if ( !layer()->isInScaleRange( ms.scale() ) )
|
||||
{
|
||||
@ -425,7 +425,7 @@ void QgsAttributeTableFilterModel::generateListOfVisibleFeatures()
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( renderer && renderer->capabilities() & QgsFeatureRenderer::ScaleDependent )
|
||||
if ( renderer->capabilities() & QgsFeatureRenderer::ScaleDependent )
|
||||
{
|
||||
// setup scale
|
||||
// mapRenderer()->renderContext()->scale is not automatically updated when
|
||||
@ -436,7 +436,7 @@ void QgsAttributeTableFilterModel::generateListOfVisibleFeatures()
|
||||
renderContext.setRendererScale( ms.scale() );
|
||||
}
|
||||
|
||||
filter = renderer && renderer->capabilities() & QgsFeatureRenderer::Filter;
|
||||
filter = renderer->capabilities() & QgsFeatureRenderer::Filter;
|
||||
}
|
||||
|
||||
renderer->startRender( renderContext, layer()->fields() );
|
||||
@ -476,7 +476,7 @@ void QgsAttributeTableFilterModel::generateListOfVisibleFeatures()
|
||||
|
||||
features.close();
|
||||
|
||||
if ( renderer && renderer->capabilities() & QgsFeatureRenderer::ScaleDependent )
|
||||
if ( renderer->capabilities() & QgsFeatureRenderer::ScaleDependent )
|
||||
{
|
||||
renderer->stopRender( renderContext );
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user