Skip to content

Commit cf3054d

Browse files
arnaud-morvanrldhont
authored andcommittedJun 15, 2018
Remove invisible layers from legend
Do not show invisible layers in composer legend. Useful for raster layers as QgsMapHitTest only take care of vector layers. Related with #14194 Related with #11641
1 parent 514d036 commit cf3054d

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed
 

‎src/core/layertree/qgslayertreemodel.cpp

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,21 +1150,24 @@ QList<QgsLayerTreeModelLegendNode*> QgsLayerTreeModel::filterLegendNodes( const
11501150
}
11511151
else if ( mLegendFilterMapSettings )
11521152
{
1153-
Q_FOREACH ( QgsLayerTreeModelLegendNode* node, nodes )
1153+
if ( !nodes.isEmpty() && mLegendFilterMapSettings->layers().contains( nodes.at( 0 )->layerNode()->layerId() ) )
11541154
{
1155-
QgsSymbolV2* ruleKey = reinterpret_cast< QgsSymbolV2* >( node->data( QgsSymbolV2LegendNode::SymbolV2LegacyRuleKeyRole ).value<void*>() );
1156-
bool checked = mLegendFilterUsesExtent || node->data( Qt::CheckStateRole ).toInt() == Qt::Checked;
1157-
if ( ruleKey && checked )
1155+
Q_FOREACH ( QgsLayerTreeModelLegendNode* node, nodes )
11581156
{
1159-
QString ruleKey = node->data( QgsSymbolV2LegendNode::RuleKeyRole ).toString();
1160-
if ( QgsVectorLayer* vl = qobject_cast<QgsVectorLayer*>( node->layerNode()->layer() ) )
1157+
QgsSymbolV2* ruleKey = reinterpret_cast< QgsSymbolV2* >( node->data( QgsSymbolV2LegendNode::SymbolV2LegacyRuleKeyRole ).value<void*>() );
1158+
bool checked = mLegendFilterUsesExtent || node->data( Qt::CheckStateRole ).toInt() == Qt::Checked;
1159+
if ( ruleKey && checked )
11611160
{
1162-
if ( mLegendFilterHitTest->legendKeyVisible( ruleKey, vl ) )
1163-
filtered << node;
1161+
QString ruleKey = node->data( QgsSymbolV2LegendNode::RuleKeyRole ).toString();
1162+
if ( QgsVectorLayer* vl = qobject_cast<QgsVectorLayer*>( node->layerNode()->layer() ) )
1163+
{
1164+
if ( mLegendFilterHitTest->legendKeyVisible( ruleKey, vl ) )
1165+
filtered << node;
1166+
}
11641167
}
1168+
else // unknown node type or unchecked
1169+
filtered << node;
11651170
}
1166-
else // unknown node type or unchecked
1167-
filtered << node;
11681171
}
11691172
}
11701173
else

0 commit comments

Comments
 (0)
Please sign in to comment.