legend interface: guard layer dereferences (fixes #13899)

This commit is contained in:
Juergen E. Fischer 2015-11-29 20:48:10 +01:00
parent c14352fa55
commit 3b2d7173f6

View File

@ -77,6 +77,9 @@ void QgsAppLegendInterface::removeGroup( int groupIndex )
void QgsAppLegendInterface::moveLayer( QgsMapLayer *ml, int groupIndex )
{
if ( !ml )
return;
QgsLayerTreeGroup* group = groupIndexToNode( groupIndex );
if ( !group )
return;
@ -157,12 +160,18 @@ int QgsAppLegendInterface::groupNodeToIndex( QgsLayerTreeGroup* group )
void QgsAppLegendInterface::setLayerVisible( QgsMapLayer *ml, bool visible )
{
if ( !ml )
return;
if ( QgsLayerTreeLayer* nodeLayer = mLayerTreeView->layerTreeModel()->rootGroup()->findLayer( ml->id() ) )
nodeLayer->setVisible( visible ? Qt::Checked : Qt::Unchecked );
}
void QgsAppLegendInterface::setLayerExpanded( QgsMapLayer * ml, bool expand )
{
if ( !ml )
return;
if ( QgsLayerTreeLayer* nodeLayer = mLayerTreeView->layerTreeModel()->rootGroup()->findLayer( ml->id() ) )
setExpanded( nodeLayer, expand );
}
@ -249,6 +258,9 @@ bool QgsAppLegendInterface::isGroupVisible( int groupIndex )
bool QgsAppLegendInterface::isLayerExpanded( QgsMapLayer *ml )
{
if ( !ml )
return false;
if ( QgsLayerTreeLayer* nodeLayer = mLayerTreeView->layerTreeModel()->rootGroup()->findLayer( ml->id() ) )
return nodeLayer->isExpanded();
@ -258,6 +270,9 @@ bool QgsAppLegendInterface::isLayerExpanded( QgsMapLayer * ml )
bool QgsAppLegendInterface::isLayerVisible( QgsMapLayer *ml )
{
if ( !ml )
return false;
if ( QgsLayerTreeLayer* nodeLayer = mLayerTreeView->layerTreeModel()->rootGroup()->findLayer( ml->id() ) )
return nodeLayer->isVisible() == Qt::Checked;
@ -283,6 +298,9 @@ QList< QgsMapLayer * > QgsAppLegendInterface::layers() const
void QgsAppLegendInterface::refreshLayerSymbology( QgsMapLayer *ml )
{
if ( !ml )
return;
mLayerTreeView->refreshLayerSymbology( ml->id() );
}