Skip to content

Commit a8d627d

Browse files
committed
Revert "Remove no longer required hack to get composer maps to render"
Because... server
1 parent 3ffeabe commit a8d627d

File tree

6 files changed

+36
-11
lines changed

6 files changed

+36
-11
lines changed

src/app/composer/qgscomposer.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,23 @@ bool QgsComposer::loadFromTemplate( const QDomDocument &templateDoc, bool clearE
934934
return result;
935935
}
936936

937+
void QgsComposer::onCanvasLayersChanged( const QList<QgsMapLayer *> &layers )
938+
{
939+
if ( !mComposition )
940+
return;
941+
942+
QList< QgsComposerMap * > maps;
943+
mComposition->composerItems( maps );
944+
945+
Q_FOREACH ( QgsComposerMap *map, maps )
946+
{
947+
if ( map->keepLayerSet() )
948+
continue;
949+
950+
map->setLayers( layers );
951+
}
952+
}
953+
937954
void QgsComposer::updateStatusCursorPos( QPointF cursorPosition )
938955
{
939956
if ( !mComposition )

src/app/composer/qgscomposer.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,16 @@ class QgsComposer: public QMainWindow, private Ui::QgsComposerBase
114114
*/
115115
bool loadFromTemplate( const QDomDocument &templateDoc, bool clearExisting );
116116

117+
public slots:
118+
119+
/**
120+
* Should be called whenever the app's canvas layers change (or layer order
121+
* changes). Required to update composer maps which are synced to the canvas
122+
* layer set with the new canvas layer set.
123+
* @note added in QGIS 3.0
124+
*/
125+
void onCanvasLayersChanged( const QList< QgsMapLayer * > &layers );
126+
117127
protected:
118128
//! Move event
119129
virtual void moveEvent( QMoveEvent * ) override;

src/app/qgisapp.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6828,6 +6828,7 @@ QgsComposer *QgisApp::createNewComposer( QString title )
68286828
connect( newComposerObject, &QgsComposer::composerAdded, this, &QgisApp::composerAdded );
68296829
connect( newComposerObject, &QgsComposer::composerWillBeRemoved, this, &QgisApp::composerWillBeRemoved );
68306830
connect( newComposerObject, &QgsComposer::atlasPreviewFeatureChanged, this, &QgisApp::refreshMapCanvas );
6831+
connect( mLayerTreeCanvasBridge, &QgsLayerTreeMapCanvasBridge::canvasLayersChanged, newComposerObject, &QgsComposer::onCanvasLayersChanged );
68316832

68326833
markDirty();
68336834
return newComposerObject;
@@ -6931,6 +6932,7 @@ bool QgisApp::loadComposersFromProject( const QDomDocument &doc )
69316932
connect( composer, &QgsComposer::composerAdded, this, &QgisApp::composerAdded );
69326933
connect( composer, &QgsComposer::composerWillBeRemoved, this, &QgisApp::composerWillBeRemoved );
69336934
connect( composer, &QgsComposer::atlasPreviewFeatureChanged, this, &QgisApp::refreshMapCanvas );
6935+
connect( mLayerTreeCanvasBridge, &QgsLayerTreeMapCanvasBridge::canvasLayersChanged, composer, &QgsComposer::onCanvasLayersChanged );
69346936

69356937
QgsDebugMsg( QString( "Loaded composer %1: %2ms" ).arg( title ).arg( t.elapsed() ) );
69366938
}

src/core/composer/qgscomposermap.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -475,15 +475,11 @@ QList<QgsMapLayer *> QgsComposerMap::layersToRender( const QgsExpressionContext
475475
if ( mComposition->project()->mapThemeCollection()->hasMapTheme( presetName ) )
476476
renderLayers = mComposition->project()->mapThemeCollection()->mapThemeVisibleLayers( presetName );
477477
else // fallback to using map canvas layers
478-
renderLayers = mComposition->project()->mapThemeCollection()->masterVisibleLayers();
479-
}
480-
else if ( mKeepLayerSet )
481-
{
482-
renderLayers = layers();
478+
renderLayers = layers();
483479
}
484480
else
485481
{
486-
renderLayers = mComposition->project()->mapThemeCollection()->masterVisibleLayers();
482+
renderLayers = layers();
487483
}
488484

489485
bool ok = false;
@@ -1500,7 +1496,6 @@ QList<QgsMapLayer *> QgsComposerMap::layers() const
15001496

15011497
void QgsComposerMap::setLayers( const QList<QgsMapLayer *> &layers )
15021498
{
1503-
mKeepLayerSet = true;
15041499
mLayers = _qgis_listRawToQPointer( layers );
15051500
}
15061501

src/core/composer/qgscomposermap.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,16 +220,16 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
220220
void setKeepLayerSet( bool enabled ) {mKeepLayerSet = enabled;}
221221

222222
/**
223-
* Getter for stored layer set. This will only be used if the
224-
* keepLayerSet() flag is true.
223+
* Getter for stored layer set. This will usually be synchronized with the main app canvas
224+
* layer set (and layer order), unless the keepLayerSet() flag is true.
225225
* @see setLayers()
226226
* @see keepLayerSet()
227227
*/
228228
QList<QgsMapLayer *> layers() const;
229229

230230
/**
231-
* Setter for stored layer set. Calling this will automatically set
232-
* keepLayerSet() to true.
231+
* Setter for stored layer set. This will usually be synchronized with the main app canvas
232+
* layer set (and layer order), unless the keepLayerSet() flag is true.
233233
* @see layers()
234234
* @see keepLayerSet()
235235
*/

src/gui/qgscomposerview.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,7 @@ void QgsComposerView::mouseReleaseEvent( QMouseEvent *e )
10011001
if ( mCanvas )
10021002
{
10031003
composerMap->zoomToExtent( mCanvas->mapSettings().visibleExtent() );
1004+
composerMap->setLayers( mCanvas->mapSettings().layers() );
10041005
}
10051006

10061007
composition()->addComposerMap( composerMap );

0 commit comments

Comments
 (0)