Index: src/gui/qgsmapcanvas.cpp =================================================================== --- src/gui/qgsmapcanvas.cpp (revision 15729) +++ src/gui/qgsmapcanvas.cpp (working copy) @@ -232,7 +232,7 @@ } // create layer set - QStringList layerSet, layerSetOverview; + QStringList layerSet, layerSetOverview, allLayerSet; int i; for ( i = 0; i < layers.size(); i++ ) @@ -243,6 +243,9 @@ continue; } + // collect all layers (both visible and not visible) + allLayerSet.push_back( lyr.layer()->id() ); + if ( lyr.isVisible() ) { layerSet.push_back( lyr.layer()->id() ); @@ -275,6 +278,7 @@ } mMapRenderer->setLayerSet( layerSet ); + mMapRenderer->setAllLayerSet( allLayerSet ); for ( i = 0; i < layerCount(); i++ ) { Index: src/core/qgsmaprenderer.h =================================================================== --- src/core/qgsmaprenderer.h (revision 15729) +++ src/core/qgsmaprenderer.h (working copy) @@ -207,6 +207,9 @@ //! change current layer set void setLayerSet( const QStringList& layers ); + //! change current all layer set + void setAllLayerSet( const QStringList& layers ); + //! updates extent of the layer set void updateFullExtent(); @@ -303,6 +306,10 @@ //! stores array of layers to be rendered (identified by string) QStringList mLayerSet; + //! stores array of all canvas layers (identified by string). + //! Need this to calculate full extent correctly + QStringList mAllLayerSet; + //! full extent of the layer set QgsRectangle mFullExtent; Index: src/core/qgsmaprenderer.cpp =================================================================== --- src/core/qgsmaprenderer.cpp (revision 15729) +++ 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 ) @@ -903,6 +903,12 @@ updateFullExtent(); } +void QgsMapRenderer::setAllLayerSet( const QStringList& layers ) +{ + mAllLayerSet = layers; + updateFullExtent(); +} + QStringList& QgsMapRenderer::layerSet() { return mLayerSet;