Skip to content

Commit 5c3d0dd

Browse files
committed
WMS server: fix groups from embedded files if embedded project uses custom drawing order
1 parent d63f0c4 commit 5c3d0dd

File tree

1 file changed

+34
-9
lines changed

1 file changed

+34
-9
lines changed

src/mapserver/qgsprojectparser.cpp

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1851,6 +1851,7 @@ void QgsProjectParser::addLayersFromGroup( const QDomElement& legendGroupElem, Q
18511851
}
18521852
else //normal group
18531853
{
1854+
QMap< int, QDomElement > layerOrderList;
18541855
QDomNodeList groupElemChildren = legendGroupElem.childNodes();
18551856
for ( int i = 0; i < groupElemChildren.size(); ++i )
18561857
{
@@ -1861,9 +1862,23 @@ void QgsProjectParser::addLayersFromGroup( const QDomElement& legendGroupElem, Q
18611862
}
18621863
else if ( elem.tagName() == "legendlayer" )
18631864
{
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+
}
18651874
}
18661875
}
1876+
1877+
QMap< int, QDomElement >::const_iterator layerOrderIt = layerOrderList.constBegin();
1878+
for ( ; layerOrderIt != layerOrderList.constEnd(); ++layerOrderIt )
1879+
{
1880+
addLayerFromLegendLayer( layerOrderIt.value(), layerList, useCache );
1881+
}
18671882
}
18681883
}
18691884

@@ -4110,15 +4125,17 @@ void QgsProjectParser::addDrawingOrderEmbeddedGroup( const QDomElement& groupEle
41104125

41114126
QDomNodeList layerNodeList = embeddedGroupElem.elementsByTagName( "legendlayer" );
41124127
QDomElement layerElem;
4113-
QStringList layerNames;
4128+
QMap<int, QString > layerNames;
41144129
QString layerName;
41154130
for ( int i = 0; i < layerNodeList.size(); ++i )
41164131
{
41174132
layerElem = layerNodeList.at( i ).toElement();
41184133
layerName = layerElem.attribute( "name" );
4119-
if ( useDrawingOrder )
4134+
4135+
int layerDrawingOrder = layerElem.attribute( "drawingOrder", "-1" ).toInt();
4136+
if ( layerDrawingOrder == -1 )
41204137
{
4121-
layerNames.push_back( layerName );
4138+
layerNames.insert( layerNames.size(), layerName );
41224139
}
41234140
else
41244141
{
@@ -4128,12 +4145,20 @@ void QgsProjectParser::addDrawingOrderEmbeddedGroup( const QDomElement& groupEle
41284145

41294146
if ( useDrawingOrder )
41304147
{
4131-
for ( int i = layerNames.size() - 1; i >= 0; --i )
4148+
QMapIterator<int, QString > layerNamesIt( layerNames );
4149+
layerNamesIt.toBack();
4150+
while ( layerNamesIt.hasPrevious() )
41324151
{
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() );
41374162
}
41384163
}
41394164
}

0 commit comments

Comments
 (0)