@@ -1330,6 +1330,8 @@ bool QgsVectorLayer::readXml( const QDomNode& layer_node )
1330
1330
1331
1331
void QgsVectorLayer::setDataSource ( QString dataSource, QString baseName, QString provider, bool loadDefaultStyleFlag )
1332
1332
{
1333
+ QGis::GeometryType oldGeomType = geometryType ();
1334
+
1333
1335
mDataSource = dataSource;
1334
1336
mLayerName = capitaliseLayerName ( baseName );
1335
1337
setLayerName ( mLayerName );
@@ -1340,24 +1342,29 @@ void QgsVectorLayer::setDataSource( QString dataSource, QString baseName, QStrin
1340
1342
// Always set crs
1341
1343
setCoordinateSystem ();
1342
1344
1343
- // check if there is a default style / propertysheet defined
1344
- // for this layer and if so apply it
1345
- bool defaultLoadedFlag = false ;
1346
- if ( loadDefaultStyleFlag )
1345
+ // reset style if loading default style, style is missing, or geometry type has changed
1346
+ if ( !rendererV2 () || !legend () || oldGeomType != geometryType () || loadDefaultStyleFlag )
1347
1347
{
1348
- loadDefaultStyle ( defaultLoadedFlag );
1349
- }
1348
+ // check if there is a default style / propertysheet defined
1349
+ // for this layer and if so apply it
1350
+ bool defaultLoadedFlag = false ;
1351
+ if ( loadDefaultStyleFlag )
1352
+ {
1353
+ loadDefaultStyle ( defaultLoadedFlag );
1354
+ }
1350
1355
1351
- // if the default style failed to load or was disabled use some very basic defaults
1352
- if ( !defaultLoadedFlag && hasGeometryType () )
1353
- {
1354
- // add single symbol renderer
1355
- setRendererV2 ( QgsFeatureRendererV2::defaultRenderer ( geometryType () ) );
1356
- }
1356
+ // if the default style failed to load or was disabled use some very basic defaults
1357
+ if ( !defaultLoadedFlag && hasGeometryType () )
1358
+ {
1359
+ // add single symbol renderer
1360
+ setRendererV2 ( QgsFeatureRendererV2::defaultRenderer ( geometryType () ) );
1361
+ }
1357
1362
1358
- setLegend ( QgsMapLayerLegend::defaultVectorLegend ( this ) );
1363
+ setLegend ( QgsMapLayerLegend::defaultVectorLegend ( this ) );
1364
+ }
1359
1365
1360
1366
connect ( QgsMapLayerRegistry::instance (), SIGNAL ( layerWillBeRemoved ( QString ) ), this , SLOT ( checkJoinLayerRemove ( QString ) ) );
1367
+ emit repaintRequested ();
1361
1368
}
1362
1369
}
1363
1370
0 commit comments