Skip to content

Commit c05e5e2

Browse files
committedJul 16, 2014
When grouping layer tree nodes, insert new group at the same position
1 parent 18a1c8a commit c05e5e2

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed
 

‎src/gui/layertree/qgslayertreeviewdefaultactions.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,21 +260,24 @@ void QgsLayerTreeViewDefaultActions::makeTopLevel()
260260
void QgsLayerTreeViewDefaultActions::groupSelected()
261261
{
262262
QList<QgsLayerTreeNode*> nodes = mView->selectedNodes( true );
263-
if ( nodes.count() < 2 )
263+
if ( nodes.count() < 2 || ! QgsLayerTree::isGroup( nodes[0]->parent() ) )
264264
return;
265265

266-
QgsLayerTreeGroup* parentGroup = mView->layerTreeModel()->rootGroup();
266+
QgsLayerTreeGroup* parentGroup = QgsLayerTree::toGroup( nodes[0]->parent() );
267+
int insertIdx = parentGroup->children().indexOf( nodes[0] );
267268

268269
QgsLayerTreeGroup* newGroup = new QgsLayerTreeGroup( uniqueGroupName( parentGroup ) );
269270
foreach ( QgsLayerTreeNode* node, nodes )
270271
newGroup->addChildNode( node->clone() );
271272

272-
parentGroup->addChildNode( newGroup );
273+
parentGroup->insertChildNode( insertIdx, newGroup );
273274

274275
foreach ( QgsLayerTreeNode* node, nodes )
275276
{
276277
QgsLayerTreeGroup* group = qobject_cast<QgsLayerTreeGroup*>( node->parent() );
277278
if ( group )
278279
group->removeChildNode( node );
279280
}
281+
282+
mView->setCurrentIndex( mView->layerTreeModel()->node2index( newGroup ) );
280283
}

0 commit comments

Comments
 (0)
Please sign in to comment.