Index: src/gui/qgsmapcanvas.cpp =================================================================== --- src/gui/qgsmapcanvas.cpp (revision 15676) +++ src/gui/qgsmapcanvas.cpp (working copy) @@ -231,6 +231,7 @@ return; } + mMapRenderer->setAllLayerSet(layers); // create layer set QStringList layerSet, layerSetOverview; Index: src/core/qgsmaprenderer.h =================================================================== --- src/core/qgsmaprenderer.h (revision 15676) +++ src/core/qgsmaprenderer.h (working copy) @@ -24,6 +24,7 @@ #include "qgis.h" #include "qgsrectangle.h" #include "qgsrendercontext.h" +#include "../gui/qgsmapcanvas.h" class QDomDocument; class QDomNode; @@ -206,6 +207,9 @@ //! change current layer set void setLayerSet( const QStringList& layers ); + + // set all layerset including both visible and invisible layers + void setAllLayerSet( QList &allLayers ); //! updates extent of the layer set void updateFullExtent(); @@ -303,6 +307,9 @@ //! stores array of layers to be rendered (identified by string) QStringList mLayerSet; + // stores array of layers both visible and invisible layers for calculating full extent + QStringList mAllLayerSet; + //! full extent of the layer set QgsRectangle mFullExtent; Index: src/core/qgsmaprenderer.cpp =================================================================== --- src/core/qgsmaprenderer.cpp (revision 15676) +++ src/core/qgsmaprenderer.cpp (working copy) @@ -840,8 +840,8 @@ // iterate through the map layers and test each layers extent // against the current min and max values - QStringList::iterator it = mLayerSet.begin(); - while ( it != mLayerSet.end() ) + QStringList::iterator it = mAllLayerSet.begin(); + while ( it != mAllLayerSet.end() ) { QgsMapLayer * lyr = registry->mapLayer( *it ); if ( lyr == NULL ) @@ -908,6 +908,22 @@ return mLayerSet; } +void QgsMapRenderer::setAllLayerSet( QList &allLayers ) +{ + int i; + for ( i = 0; i < allLayers.size(); i++ ) + { + QgsMapCanvasLayer &lyr = allLayers[i]; + if ( !lyr.layer() ) + { + continue; + } + + mAllLayerSet.push_back( lyr.layer()->id() ); + } + QgsDebugMsg ( " total layers present are " + QString :: number (mAllLayerSet.size())); +} + QgsOverlayObjectPositionManager* QgsMapRenderer::overlayManagerFromSettings() { QSettings settings;