Skip to content

Commit bba9a99

Browse files
committed
[layertree] do not allow drag'n'drop of internal embedded nodes
1 parent e4d0f15 commit bba9a99

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/gui/layertree/qgslayertreemodel.cpp

+14-3
Original file line numberDiff line numberDiff line change
@@ -271,15 +271,26 @@ Qt::ItemFlags QgsLayerTreeModel::flags( const QModelIndex& index ) const
271271
return Qt::ItemIsEnabled; // | Qt::ItemIsSelectable;
272272

273273
Qt::ItemFlags f = Qt::ItemIsEnabled | Qt::ItemIsSelectable;
274+
274275
if ( testFlag( AllowNodeRename ) )
275276
f |= Qt::ItemIsEditable;
276-
if ( testFlag( AllowNodeReorder ) )
277-
f |= Qt::ItemIsDragEnabled;
277+
278278
QgsLayerTreeNode* node = index2node( index );
279+
bool isEmbedded = node->customProperty( "embedded" ).toInt();
280+
281+
if ( testFlag( AllowNodeReorder ) )
282+
{
283+
// only root embedded nodes can be reordered
284+
if ( !isEmbedded || ( isEmbedded && node->parent() && !node->parent()->customProperty( "embedded" ).toInt() ) )
285+
f |= Qt::ItemIsDragEnabled;
286+
}
287+
279288
if ( testFlag( AllowNodeChangeVisibility ) && ( QgsLayerTree::isLayer( node ) || QgsLayerTree::isGroup( node ) ) )
280289
f |= Qt::ItemIsUserCheckable;
281-
if ( testFlag( AllowNodeReorder ) && QgsLayerTree::isGroup( node ) )
290+
291+
if ( testFlag( AllowNodeReorder ) && QgsLayerTree::isGroup( node ) && !isEmbedded )
282292
f |= Qt::ItemIsDropEnabled;
293+
283294
return f;
284295
}
285296

0 commit comments

Comments
 (0)