Skip to content

Commit d673606

Browse files
committed
Another fix for embedded groups and drawing order. Deactivated the server method for now as it still needs to be adapted
1 parent 49cadd5 commit d673606

File tree

2 files changed

+24
-21
lines changed

2 files changed

+24
-21
lines changed

src/app/legend/qgslegend.cpp

+8-10
Original file line numberDiff line numberDiff line change
@@ -1182,7 +1182,7 @@ QList<DrawingOrderInfo> QgsLegend::drawingOrder()
11821182
}
11831183
else if ( lgroup )
11841184
{
1185-
if ( lgroup->isEmbedded() && !(lgroup->parent()) )
1185+
if ( lgroup->isEmbedded() && !( lgroup->parent() ) )
11861186
{
11871187
QList<QgsLegendLayer*> groupLayers = lgroup->legendLayers();
11881188
QList<QgsLegendLayer*>::const_iterator groupLayerIt = groupLayers.constBegin();
@@ -1245,36 +1245,35 @@ QList<QgsMapCanvasLayer> QgsLegend::canvasLayers()
12451245
{
12461246
layers.insertMulti( llayer->drawingOrder(), canvasLayer );
12471247
}
1248-
++nEntries;
12491248
}
12501249
else if ( lgroup )
12511250
{
12521251
if ( lgroup->isEmbedded() )
12531252
{
1254-
int groupDrawingOrder = lgroup->drawingOrder() + embeddedGroupChildren.size();
1253+
int groupDrawingOrder = lgroup->drawingOrder();
12551254
QList<QgsLegendLayer*> groupLayers = lgroup->legendLayers();
1256-
for ( int i = 0; i < groupLayers.size(); ++i )
1255+
for ( int i = groupLayers.size() - 1; i >= 0; --i )
12571256
{
12581257
QgsLegendLayer* ll = groupLayers.at( i );
1259-
if ( !ll )
1258+
if ( !ll || embeddedGroupChildren.contains( ll ) )
12601259
{
12611260
continue;
12621261
}
12631262

12641263
if ( mUpdateDrawingOrder )
12651264
{
1266-
layers.insertMulti( nEntries + embeddedGroupChildren.size(), ll->canvasLayer() );
1265+
layers.insertMulti( nEntries, ll->canvasLayer() );
12671266
}
12681267
else
12691268
{
1270-
layers.insertMulti( groupDrawingOrder + i, ll->canvasLayer() );
1269+
layers.insertMulti( groupDrawingOrder, ll->canvasLayer() );
12711270
}
12721271
embeddedGroupChildren.insert( ll );
1273-
++nEntries;
12741272
}
12751273
}
12761274
}
12771275
++it;
1276+
++nEntries;
12781277
}
12791278

12801279
return layers.values();
@@ -1315,10 +1314,9 @@ void QgsLegend::setDrawingOrder( const QList<DrawingOrderInfo>& order )
13151314
QList<QgsLegendLayer*>::iterator groupIt = groupLayers.begin();
13161315
for ( ; groupIt != groupLayers.end(); ++groupIt )
13171316
{
1318-
( *groupIt )->setDrawingOrder( i );
13191317
layers.push_back(( *groupIt )->canvasLayer() );
1320-
++i;
13211318
}
1319+
++i;
13221320
}
13231321
}
13241322
else

src/mapserver/qgsprojectparser.cpp

+16-11
Original file line numberDiff line numberDiff line change
@@ -2255,16 +2255,16 @@ void QgsProjectParser::addDrawingOrder( QDomElement elem, bool useDrawingOrder,
22552255

22562256
if ( elem.tagName() == "legendlayer" )
22572257
{
2258-
if ( useDrawingOrder || embeddedOrder != -1 )
2258+
if ( useDrawingOrder || embeddedOrder != -1 )
22592259
{
22602260
int order = -1;
2261-
if( embedded )
2261+
if ( embedded )
22622262
{
2263-
order = embeddedOrder;
2263+
order = embeddedOrder;
22642264
}
22652265
else
22662266
{
2267-
order = drawingOrder( elem );
2267+
order = drawingOrder( elem );
22682268
}
22692269
orderedLayerList.insertMulti( order + nEmbeddedGroupLayers, elem.attribute( "name" ) );
22702270
}
@@ -2316,6 +2316,10 @@ void QgsProjectParser::addDrawingOrder( QDomElement elem, bool useDrawingOrder,
23162316

23172317
void QgsProjectParser::addDrawingOrder( QDomElement& parentElem, QDomDocument& doc ) const
23182318
{
2319+
2320+
return; //soon...
2321+
2322+
#if 0
23192323
if ( !mXMLDoc )
23202324
{
23212325
return;
@@ -2350,6 +2354,7 @@ void QgsProjectParser::addDrawingOrder( QDomElement& parentElem, QDomDocument& d
23502354
QDomText drawingOrderText = doc.createTextNode( layerList.join( "," ) );
23512355
layerDrawingOrderElem.appendChild( drawingOrderText );
23522356
parentElem.appendChild( layerDrawingOrderElem );
2357+
#endif //0
23532358
}
23542359

23552360
void QgsProjectParser::projectLayerMap( QMap<QString, QgsMapLayer*>& layerMap ) const
@@ -2700,13 +2705,13 @@ void QgsProjectParser::drawAnnotationRectangle( QPainter* p, const QDomElement&
27002705

27012706
int QgsProjectParser::drawingOrder( const QDomElement& elem )
27022707
{
2703-
QDomElement e = elem;
2704-
while( !e.isNull() )
2708+
QDomElement e = elem;
2709+
while ( !e.isNull() )
2710+
{
2711+
if ( e.hasAttribute( "drawingOrder" ) )
27052712
{
2706-
if( e.hasAttribute( "drawingOrder" ) )
2707-
{
2708-
return e.attribute( "drawingOrder" ).toInt();
2709-
}
2710-
e = e.parentNode().toElement();
2713+
return e.attribute( "drawingOrder" ).toInt();
27112714
}
2715+
e = e.parentNode().toElement();
2716+
}
27122717
}

0 commit comments

Comments
 (0)