Skip to content

Commit

Permalink
Cleanup group layers when groups are removed
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Nov 25, 2021
1 parent f91ace8 commit 01ca203
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions src/app/qgisapp.cpp
Expand Up @@ -12180,7 +12180,7 @@ void QgisApp::removeLayer()
return;
}

QList<QgsLayerTreeNode *> selectedNodes = mLayerTreeView->selectedNodes( true );
const QList<QgsLayerTreeNode *> selectedNodes = mLayerTreeView->selectedNodes( true );

//validate selection
if ( selectedNodes.isEmpty() )
Expand Down Expand Up @@ -12221,7 +12221,7 @@ void QgisApp::removeLayer()
}
};

for ( const auto &n : std::as_const( selectedNodes ) )
for ( const QgsLayerTreeNode *n : selectedNodes )
{
harvest( n );
}
Expand All @@ -12243,9 +12243,15 @@ void QgisApp::removeLayer()
return;
}

const auto constSelectedNodes = selectedNodes;
for ( QgsLayerTreeNode *node : constSelectedNodes )
for ( QgsLayerTreeNode *node : selectedNodes )
{
if ( QgsLayerTreeGroup *group = qobject_cast< QgsLayerTreeGroup * >( node ) )
{
if ( QgsGroupLayer *groupLayer = group->groupLayer() )
{
QgsProject::instance()->removeMapLayer( groupLayer );
}
}
QgsLayerTreeGroup *parentGroup = qobject_cast<QgsLayerTreeGroup *>( node->parent() );
if ( parentGroup )
parentGroup->removeChildNode( node );
Expand Down

0 comments on commit 01ca203

Please sign in to comment.