Showing with 16 additions and 11 deletions.
  1. +16 −5 src/app/composer/qgscomposerlegendwidget.cpp
  2. +0 −6 src/core/composer/qgscomposition.cpp
21 changes: 16 additions & 5 deletions src/app/composer/qgscomposerlegendwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -888,16 +888,27 @@ void QgsComposerLegendWidget::updateLegend()

//get layer id list
QStringList layerIdList;
QgsMapCanvas* canvas = app->mapCanvas();
if ( canvas )
const QgsComposerMap* linkedMap = mLegend->composerMap();
if ( linkedMap && linkedMap->keepLayerSet() )
{
QgsMapRenderer* renderer = canvas->mapRenderer();
if ( renderer )
//if there is a linked map, and if that linked map has a locked layer set, we take the layerIdList from that ComposerMap
layerIdList = linkedMap->layerSet();
}
else
{
//we take the layerIdList from the Canvas
QgsMapCanvas* canvas = app->mapCanvas();
if ( canvas )
{
layerIdList = renderer->layerSet();
QgsMapRenderer* renderer = canvas->mapRenderer();
if ( renderer )
{
layerIdList = renderer->layerSet();
}
}
}


//and also group info
QgsAppLegendInterface legendIface( app->legend() );
QList< GroupLayerInfo > groupInfo = legendIface.groupLayerRelationship();
Expand Down
6 changes: 0 additions & 6 deletions src/core/composer/qgscomposition.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1862,12 +1862,6 @@ void QgsComposition::addComposerScaleBar( QgsComposerScaleBar* scaleBar )

void QgsComposition::addComposerLegend( QgsComposerLegend* legend )
{
//take first available map
QList<const QgsComposerMap*> mapItemList = composerMapItems();
if ( mapItemList.size() > 0 )
{
legend->setComposerMap( mapItemList.at( 0 ) );
}
addItem( legend );
emit composerLegendAdded( legend );
clearSelection();
Expand Down