Skip to content

Commit 86024ef

Browse files
committedJan 22, 2018
do not list non spatial in custom layer order widget
fix #17887
1 parent efe378d commit 86024ef

File tree

1 file changed

+35
-10
lines changed

1 file changed

+35
-10
lines changed
 

‎src/core/layertree/qgslayertree.cpp

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
#include "qgslayertree.h"
1717
#include "qgsmaplayerlistutils.h"
18+
#include "qgsvectorlayer.h"
1819

1920
QgsLayerTree::QgsLayerTree()
2021
{
@@ -38,7 +39,7 @@ QList<QgsMapLayer *> QgsLayerTree::customLayerOrder() const
3839

3940
void QgsLayerTree::setCustomLayerOrder( const QList<QgsMapLayer *> &customLayerOrder )
4041
{
41-
QgsWeakMapLayerPointerList newOrder = _qgis_listRawToQPointer( customLayerOrder );
42+
QgsWeakMapLayerPointerList newOrder = _qgis_listRawToQPointer( customLayerOrder );
4243

4344
if ( newOrder == mCustomLayerOrder )
4445
return;
@@ -54,31 +55,49 @@ void QgsLayerTree::setCustomLayerOrder( const QStringList &customLayerOrder )
5455
{
5556
QList<QgsMapLayer *> layers;
5657

57-
Q_FOREACH ( const QString &layerId, customLayerOrder )
58+
for ( const auto &layerId : customLayerOrder )
5859
{
5960
QgsLayerTreeLayer *nodeLayer = findLayer( layerId );
6061
if ( nodeLayer )
6162
{
63+
// configuration from 2.x projects might have non spatial layers
64+
QgsMapLayer *layer = nodeLayer->layer();
65+
if ( layer->type() == QgsMapLayer::VectorLayer )
66+
{
67+
QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( layer );
68+
if ( vl && !vl->isSpatial() )
69+
{
70+
continue;
71+
}
72+
}
6273
layers.append( nodeLayer->layer() );
6374
}
6475
}
65-
6676
setCustomLayerOrder( layers );
6777
}
6878

6979
QList<QgsMapLayer *> QgsLayerTree::layerOrder() const
7080
{
7181
if ( mHasCustomLayerOrder )
82+
{
7283
return customLayerOrder();
84+
}
7385
else
7486
{
7587
QList<QgsMapLayer *> layers;
76-
77-
Q_FOREACH ( QgsLayerTreeLayer *treeLayer, findLayers() )
88+
for ( const auto &treeLayer : findLayers() )
7889
{
79-
layers.append( treeLayer->layer() );
90+
QgsMapLayer *layer = treeLayer->layer();
91+
if ( layer && layer->type() == QgsMapLayer::VectorLayer )
92+
{
93+
QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( layer );
94+
if ( vl && !vl->isSpatial() )
95+
{
96+
continue;
97+
}
98+
}
99+
layers.append( layer );
80100
}
81-
82101
return layers;
83102
}
84103
}
@@ -201,12 +220,18 @@ void QgsLayerTree::addMissingLayers()
201220
{
202221
bool changed = false;
203222

204-
QList<QgsLayerTreeLayer *> allLayers = findLayers();
205-
206-
Q_FOREACH ( QgsLayerTreeLayer *layer, allLayers )
223+
for ( const auto layer : findLayers() )
207224
{
208225
if ( !mCustomLayerOrder.contains( layer->layer() ) && layer->layer() )
209226
{
227+
if ( layer->layer()->type() == QgsMapLayer::VectorLayer )
228+
{
229+
QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( layer->layer() );
230+
if ( vl && !vl->isSpatial() )
231+
{
232+
continue;
233+
}
234+
}
210235
mCustomLayerOrder.append( layer->layer() );
211236
changed = true;
212237
}

0 commit comments

Comments
 (0)
Please sign in to comment.