15
15
16
16
#include " qgslayertree.h"
17
17
#include " qgsmaplayerlistutils.h"
18
+ #include " qgsvectorlayer.h"
18
19
19
20
QgsLayerTree::QgsLayerTree ()
20
21
{
@@ -38,7 +39,7 @@ QList<QgsMapLayer *> QgsLayerTree::customLayerOrder() const
38
39
39
40
void QgsLayerTree::setCustomLayerOrder ( const QList<QgsMapLayer *> &customLayerOrder )
40
41
{
41
- QgsWeakMapLayerPointerList newOrder = _qgis_listRawToQPointer ( customLayerOrder );
42
+ QgsWeakMapLayerPointerList newOrder = _qgis_listRawToQPointer ( customLayerOrder );
42
43
43
44
if ( newOrder == mCustomLayerOrder )
44
45
return ;
@@ -54,31 +55,49 @@ void QgsLayerTree::setCustomLayerOrder( const QStringList &customLayerOrder )
54
55
{
55
56
QList<QgsMapLayer *> layers;
56
57
57
- Q_FOREACH ( const QString &layerId, customLayerOrder )
58
+ for ( const auto &layerId : customLayerOrder )
58
59
{
59
60
QgsLayerTreeLayer *nodeLayer = findLayer ( layerId );
60
61
if ( nodeLayer )
61
62
{
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
+ }
62
73
layers.append ( nodeLayer->layer () );
63
74
}
64
75
}
65
-
66
76
setCustomLayerOrder ( layers );
67
77
}
68
78
69
79
QList<QgsMapLayer *> QgsLayerTree::layerOrder () const
70
80
{
71
81
if ( mHasCustomLayerOrder )
82
+ {
72
83
return customLayerOrder ();
84
+ }
73
85
else
74
86
{
75
87
QList<QgsMapLayer *> layers;
76
-
77
- Q_FOREACH ( QgsLayerTreeLayer *treeLayer, findLayers () )
88
+ for ( const auto &treeLayer : findLayers () )
78
89
{
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 );
80
100
}
81
-
82
101
return layers;
83
102
}
84
103
}
@@ -201,12 +220,18 @@ void QgsLayerTree::addMissingLayers()
201
220
{
202
221
bool changed = false ;
203
222
204
- QList<QgsLayerTreeLayer *> allLayers = findLayers ();
205
-
206
- Q_FOREACH ( QgsLayerTreeLayer *layer, allLayers )
223
+ for ( const auto layer : findLayers () )
207
224
{
208
225
if ( !mCustomLayerOrder .contains ( layer->layer () ) && layer->layer () )
209
226
{
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
+ }
210
235
mCustomLayerOrder .append ( layer->layer () );
211
236
changed = true ;
212
237
}
0 commit comments