Skip to content

Commit 0bda714

Browse files
committed
[composer] Fixed assignment of map to legend + no updates when legend is removed
Thanks to Nyall for his help!
1 parent fe9c5c4 commit 0bda714

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

src/core/composer/qgscomposerlegend.cpp

+13-8
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ bool QgsComposerLegend::readXML( const QDomElement& itemElem, const QDomDocument
355355
//composer map
356356
if ( !itemElem.attribute( "map" ).isEmpty() )
357357
{
358-
mComposerMap = mComposition->getComposerMapById( itemElem.attribute( "map" ).toInt() );
358+
setComposerMap( mComposition->getComposerMapById( itemElem.attribute( "map" ).toInt() ) );
359359
}
360360

361361
QDomElement layerTreeElem = itemElem.firstChildElement( "layer-tree-group" );
@@ -442,7 +442,15 @@ QString QgsComposerLegend::displayName() const
442442

443443
void QgsComposerLegend::setComposerMap( const QgsComposerMap* map )
444444
{
445+
if ( mComposerMap )
446+
{
447+
disconnect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) );
448+
disconnect( mComposerMap, SIGNAL( itemChanged() ), this, SLOT( updateFilterByMap() ) );
449+
disconnect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateFilterByMap() ) );
450+
}
451+
445452
mComposerMap = map;
453+
446454
if ( map )
447455
{
448456
QObject::connect( map, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) );
@@ -455,17 +463,14 @@ void QgsComposerLegend::setComposerMap( const QgsComposerMap* map )
455463

456464
void QgsComposerLegend::invalidateCurrentMap()
457465
{
458-
if ( mComposerMap )
459-
{
460-
disconnect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) );
461-
disconnect( mComposerMap, SIGNAL( itemChanged() ), this, SLOT( updateFilterByMap() ) );
462-
disconnect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateFilterByMap() ) );
463-
}
464-
mComposerMap = 0;
466+
setComposerMap( 0 );
465467
}
466468

467469
void QgsComposerLegend::updateFilterByMap()
468470
{
471+
if ( isRemoved() )
472+
return;
473+
469474
if ( mComposerMap && mLegendFilterByMap )
470475
{
471476
int dpi = mComposition->printResolution();

0 commit comments

Comments
 (0)