Skip to content

Commit 37c8b9e

Browse files
committed
fix reordering of render order (followup 78c60a2)
(cherry picked from commit df4a41f)
1 parent a07fdfa commit 37c8b9e

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/gui/layertree/qgslayertreemapcanvasbridge.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,25 +82,31 @@ void QgsLayerTreeMapCanvasBridge::setCustomLayerOrder( const QStringList& order
8282
return;
8383

8484
// verify that the new order is correct
85-
QStringList defOrder = defaultLayerOrder();
86-
QStringList sortedNewOrder = order;
85+
QStringList defOrder( defaultLayerOrder() );
86+
QStringList newOrder( order );
87+
QStringList sortedNewOrder( order );
8788
qSort( defOrder );
8889
qSort( sortedNewOrder );
8990

9091
if ( defOrder.size() < sortedNewOrder.size() )
9192
{
92-
// some bad layers in the list?
93+
// might contain bad layers, but also duplicates
94+
QSet<QString> ids( defOrder.toSet() );
95+
9396
for ( int i = 0; i < sortedNewOrder.size(); i++ )
9497
{
95-
if ( i >= defOrder.size() || defOrder[i] != sortedNewOrder[i] )
98+
if ( !ids.contains( sortedNewOrder[i] ) )
99+
{
100+
newOrder.removeAll( sortedNewOrder[i] );
96101
sortedNewOrder.removeAt( i-- );
102+
}
97103
}
98104
}
99105

100106
if ( defOrder != sortedNewOrder )
101107
return; // must be permutation of the default order
102108

103-
mCustomLayerOrder = order;
109+
mCustomLayerOrder = newOrder;
104110
emit customLayerOrderChanged( mCustomLayerOrder );
105111

106112
if ( mHasCustomLayerOrder )

0 commit comments

Comments
 (0)