[Backport release-3_10] Fix #38473, forgetting CRS in a new project (#40707)

* Fix #38473, forgetting CRS in a new project
This commit is contained in:
qgis-bot 2020-12-22 06:26:29 +01:00 committed by GitHub
parent 9d7b550169
commit 51d7044050
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 2 deletions

View File

@ -730,6 +730,7 @@ void QgsProject::clear()
mDirty = false;
mTrustLayerMetadata = false;
mCustomVariables.clear();
mCrs = QgsCoordinateReferenceSystem();
mMetadata = QgsProjectMetadata();
if ( !settings.value( QStringLiteral( "projects/anonymize_new_projects" ), false, QgsSettings::Core ).toBool() )
{

View File

@ -48,6 +48,7 @@ class TestQgsProject : public QObject
void testReadFlags();
void testSetGetCrs();
void testEmbeddedLayerGroupFromQgz();
void testCrsValidAfterReadingProjectFile();
};
void TestQgsProject::init()
@ -568,9 +569,38 @@ void TestQgsProject::testSetGetCrs()
#else
QCOMPARE( p.ellipsoid(), QStringLiteral( "bessel" ) );
#endif
}
crsChangedSpy.clear();
ellipsoidChangedSpy.clear();
void TestQgsProject::testCrsValidAfterReadingProjectFile()
{
QgsProject p;
QSignalSpy crsChangedSpy( &p, &QgsProject::crsChanged );
// - new project
// - set CRS tp 4326, the crs changes
// - save the project
// - clear()
// - load the project, the CRS should be 4326
QTemporaryDir dir;
QVERIFY( dir.isValid() );
// on mac the returned path was not canonical and the resolver failed to convert paths properly
QString dirPath = QFileInfo( dir.path() ).canonicalFilePath();
QString projectFilename = dirPath + "/project.qgs";
p.setCrs( QgsCoordinateReferenceSystem::fromEpsgId( 4326 ) );
QCOMPARE( crsChangedSpy.count(), 1 );
QCOMPARE( p.crs(), QgsCoordinateReferenceSystem::fromEpsgId( 4326 ) );
QVERIFY( p.write( projectFilename ) );
p.clear();
QCOMPARE( p.crs(), QgsCoordinateReferenceSystem() );
QCOMPARE( crsChangedSpy.count(), 1 );
QVERIFY( p.read( projectFilename ) );
QCOMPARE( p.crs(), QgsCoordinateReferenceSystem::fromEpsgId( 4326 ) );
QCOMPARE( crsChangedSpy.count(), 2 );
}