@@ -1851,6 +1851,7 @@ void QgsProjectParser::addLayersFromGroup( const QDomElement& legendGroupElem, Q
1851
1851
}
1852
1852
else // normal group
1853
1853
{
1854
+ QMap< int , QDomElement > layerOrderList;
1854
1855
QDomNodeList groupElemChildren = legendGroupElem.childNodes ();
1855
1856
for ( int i = 0 ; i < groupElemChildren.size (); ++i )
1856
1857
{
@@ -1861,9 +1862,23 @@ void QgsProjectParser::addLayersFromGroup( const QDomElement& legendGroupElem, Q
1861
1862
}
1862
1863
else if ( elem.tagName () == " legendlayer" )
1863
1864
{
1864
- addLayerFromLegendLayer ( elem, layerList, useCache );
1865
+ int drawingOrder = elem.attribute ( " drawingOrder" , " -1" ).toInt ();
1866
+ if ( drawingOrder == -1 )
1867
+ {
1868
+ addLayerFromLegendLayer ( elem, layerList, useCache );
1869
+ }
1870
+ else
1871
+ {
1872
+ layerOrderList.insert ( drawingOrder, elem );
1873
+ }
1865
1874
}
1866
1875
}
1876
+
1877
+ QMap< int , QDomElement >::const_iterator layerOrderIt = layerOrderList.constBegin ();
1878
+ for ( ; layerOrderIt != layerOrderList.constEnd (); ++layerOrderIt )
1879
+ {
1880
+ addLayerFromLegendLayer ( layerOrderIt.value (), layerList, useCache );
1881
+ }
1867
1882
}
1868
1883
}
1869
1884
@@ -4110,15 +4125,17 @@ void QgsProjectParser::addDrawingOrderEmbeddedGroup( const QDomElement& groupEle
4110
4125
4111
4126
QDomNodeList layerNodeList = embeddedGroupElem.elementsByTagName ( " legendlayer" );
4112
4127
QDomElement layerElem;
4113
- QStringList layerNames;
4128
+ QMap< int , QString > layerNames;
4114
4129
QString layerName;
4115
4130
for ( int i = 0 ; i < layerNodeList.size (); ++i )
4116
4131
{
4117
4132
layerElem = layerNodeList.at ( i ).toElement ();
4118
4133
layerName = layerElem.attribute ( " name" );
4119
- if ( useDrawingOrder )
4134
+
4135
+ int layerDrawingOrder = layerElem.attribute ( " drawingOrder" , " -1" ).toInt ();
4136
+ if ( layerDrawingOrder == -1 )
4120
4137
{
4121
- layerNames.push_back ( layerName );
4138
+ layerNames.insert ( layerNames. size (), layerName );
4122
4139
}
4123
4140
else
4124
4141
{
@@ -4128,12 +4145,20 @@ void QgsProjectParser::addDrawingOrderEmbeddedGroup( const QDomElement& groupEle
4128
4145
4129
4146
if ( useDrawingOrder )
4130
4147
{
4131
- for ( int i = layerNames.size () - 1 ; i >= 0 ; --i )
4148
+ QMapIterator<int , QString > layerNamesIt ( layerNames );
4149
+ layerNamesIt.toBack ();
4150
+ while ( layerNamesIt.hasPrevious () )
4132
4151
{
4133
- if ( useDrawingOrder )
4134
- {
4135
- orderedLayerList.insertMulti ( embedDrawingOrder, layerNames.at ( i ) );
4136
- }
4152
+ layerNamesIt.previous ();
4153
+ orderedLayerList.insertMulti ( embedDrawingOrder, layerNamesIt.value () );
4154
+ }
4155
+ }
4156
+ else
4157
+ {
4158
+ QMap<int , QString >::const_iterator layerNamesIt = layerNames.constBegin ();
4159
+ for ( ; layerNamesIt != layerNames.constEnd (); ++layerNamesIt )
4160
+ {
4161
+ orderedLayerList.insert ( orderedLayerList.size (), layerNamesIt.value () );
4137
4162
}
4138
4163
}
4139
4164
}
0 commit comments