Skip to content

Commit 1880db0

Browse files
committed
Fix display of features in composer table if map is projected (ticket #6335)
1 parent c0ee7f0 commit 1880db0

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/core/composer/qgscomposerattributetable.cpp

+19-1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,20 @@ bool QgsComposerAttributeTable::getFeatureAttributes( QList<QgsAttributeMap>& at
129129
if ( mComposerMap && mShowOnlyVisibleFeatures )
130130
{
131131
selectionRect = mComposerMap->extent();
132+
if ( mVectorLayer && mComposerMap->mapRenderer()
133+
&& mComposerMap->mapRenderer()->hasCrsTransformEnabled() )
134+
{
135+
//transform back to layer CRS
136+
QgsCoordinateTransform coordTransform( mVectorLayer->crs(), mComposerMap->mapRenderer()->destinationCrs() );
137+
try
138+
{
139+
selectionRect = coordTransform.transformBoundingBox( selectionRect, QgsCoordinateTransform::ReverseTransform );
140+
}
141+
catch ( QgsCsException &cse )
142+
{
143+
return false;
144+
}
145+
}
132146
}
133147

134148
if ( mDisplayAttributes.size() < 1 )
@@ -221,6 +235,7 @@ bool QgsComposerAttributeTable::writeXML( QDomElement& elem, QDomDocument & doc
221235
{
222236
QDomElement composerTableElem = doc.createElement( "ComposerAttributeTable" );
223237
composerTableElem.setAttribute( "showOnlyVisibleFeatures", mShowOnlyVisibleFeatures );
238+
composerTableElem.setAttribute( "maxFeatures", mMaximumNumberOfFeatures );
224239

225240
if ( mComposerMap )
226241
{
@@ -281,7 +296,6 @@ bool QgsComposerAttributeTable::readXML( const QDomElement& itemElem, const QDom
281296
return false;
282297
}
283298

284-
mMaximumNumberOfFeatures = itemElem.attribute( "maxFeatures", "5" ).toInt();
285299
mShowOnlyVisibleFeatures = itemElem.attribute( "showOnlyVisibleFeatures", "1" ).toInt();
286300

287301
//composer map
@@ -364,6 +378,10 @@ bool QgsComposerAttributeTable::readXML( const QDomElement& itemElem, const QDom
364378
}
365379
}
366380
bool success = tableReadXML( itemElem, doc );
381+
382+
//must be done here because tableReadXML->setSceneRect changes mMaximumNumberOfFeatures
383+
mMaximumNumberOfFeatures = itemElem.attribute( "maxFeatures", "5" ).toInt();
384+
367385
emit itemChanged();
368386
return success;
369387
}

0 commit comments

Comments
 (0)