File tree Expand file tree Collapse file tree 1 file changed +11
-5
lines changed Expand file tree Collapse file tree 1 file changed +11
-5
lines changed Original file line number Diff line number Diff 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 )
You can’t perform that action at this time.
0 commit comments