diff --git a/src/core/qgsmaplayer.cpp b/src/core/qgsmaplayer.cpp index 221ed281a41..16d3ca60c1d 100644 --- a/src/core/qgsmaplayer.cpp +++ b/src/core/qgsmaplayer.cpp @@ -1061,7 +1061,7 @@ bool QgsMapLayer::importNamedStyle( QDomDocument &myDocument, QString &myErrorMe { QgsVectorLayer *vl = qobject_cast( this ); QgsWkbTypes::GeometryType importLayerGeometryType = static_cast( myRoot.firstChildElement( QStringLiteral( "layerGeometryType" ) ).text().toInt() ); - if ( vl->geometryType() != importLayerGeometryType ) + if ( importLayerGeometryType != QgsWkbTypes::GeometryType::UnknownGeometry && vl->geometryType() != importLayerGeometryType ) { myErrorMessage = tr( "Cannot apply style with symbology to layer with a different geometry type" ); return false; diff --git a/src/core/qgsvectorlayer.cpp b/src/core/qgsvectorlayer.cpp index 9536bff7a32..cdd6e0ae796 100644 --- a/src/core/qgsvectorlayer.cpp +++ b/src/core/qgsvectorlayer.cpp @@ -2800,7 +2800,10 @@ bool QgsVectorLayer::writeStyle( QDomNode &node, QDomDocument &doc, QString &err emit writeCustomSymbology( mapLayerNode, doc, errorMessage ); - if ( isSpatial() ) + // we must try to write the renderer if our geometry type is unknown + // as this allows the renderer to be correctly restored even for layers + // with broken sources + if ( isSpatial() || mWkbType == QgsWkbTypes::Unknown ) { if ( categories.testFlag( Symbology ) ) {