Skip to content

Commit 4ba2433

Browse files
committed
[Globe] Fix typos, fix model layer logic
1 parent f9c589e commit 4ba2433

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/plugins/globe/globe_plugin.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -892,14 +892,17 @@ void GlobePlugin::updateLayers()
892892
}
893893
mLayerExtents.clear();
894894

895+
QStringList drapedLayers;
896+
QStringList selectedLayers = mDockWidget->getSelectedLayers();
897+
895898
// Disconnect any previous repaintRequested signals
896899
foreach ( const QString& layerId, mTileSource->layerSet() )
897900
{
898901
QgsMapLayer* mapLayer = QgsMapLayerRegistry::instance()->mapLayer( layerId );
899902
if ( mapLayer )
900903
disconnect( mapLayer, SIGNAL( repaintRequested() ), this, SLOT( layerChanged() ) );
901904
if ( dynamic_cast<QgsVectorLayer*>( mapLayer ) )
902-
connect( static_cast<QgsVectorLayer*>( mapLayer ), SIGNAL( layerTransparencyChanged( int ) ), this, SLOT( layerChanged() ) );
905+
disconnect( static_cast<QgsVectorLayer*>( mapLayer ), SIGNAL( layerTransparencyChanged( int ) ), this, SLOT( layerChanged() ) );
903906
}
904907
osgEarth::ModelLayerVector modelLayers;
905908
mMapNode->getMap()->getModelLayers( modelLayers );
@@ -909,12 +912,11 @@ void GlobePlugin::updateLayers()
909912
if ( mapLayer )
910913
disconnect( mapLayer, SIGNAL( repaintRequested() ), this, SLOT( layerChanged() ) );
911914
if ( dynamic_cast<QgsVectorLayer*>( mapLayer ) )
912-
connect( static_cast<QgsVectorLayer*>( mapLayer ), SIGNAL( layerTransparencyChanged( int ) ), this, SLOT( layerChanged() ) );
915+
disconnect( static_cast<QgsVectorLayer*>( mapLayer ), SIGNAL( layerTransparencyChanged( int ) ), this, SLOT( layerChanged() ) );
916+
if ( !selectedLayers.contains( QString::fromStdString( modelLayer->getName() ) ) )
917+
mMapNode->getMap()->removeModelLayer( modelLayer );
913918
}
914919

915-
QStringList drapedLayers;
916-
QStringList selectedLayers = mDockWidget->getSelectedLayers();
917-
918920
Q_FOREACH ( const QString& layerId, selectedLayers )
919921
{
920922
QgsMapLayer* mapLayer = QgsMapLayerRegistry::instance()->mapLayer( layerId );
@@ -929,8 +931,8 @@ void GlobePlugin::updateLayers()
929931

930932
if ( layerConfig && ( layerConfig->renderingMode == QgsGlobeVectorLayerConfig::RenderingModeModelSimple || layerConfig->renderingMode == QgsGlobeVectorLayerConfig::RenderingModeModelAdvanced ) )
931933
{
932-
mMapNode->getMap()->removeModelLayer( mMapNode->getMap()->getModelLayerByName( mapLayer->id().toStdString() ) );
933-
addModelLayer( static_cast<QgsVectorLayer*>( mapLayer ), layerConfig );
934+
if ( !mMapNode->getMap()->getModelLayerByName( mapLayer->id().toStdString() ) )
935+
addModelLayer( static_cast<QgsVectorLayer*>( mapLayer ), layerConfig );
934936
}
935937
else
936938
{

0 commit comments

Comments
 (0)