From 3dd8008a46c921bd5a1d9c367900fc3fa290d5a4 Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Sat, 9 May 2015 21:55:43 +0200 Subject: [PATCH] grass: fix relative path support for working database and vector layers (fixes #12725) (cherry picked from commit e5dbd186d8f185174ac5fc8fd152e586aa9925f0) --- src/core/qgsproject.cpp | 2 +- src/plugins/grass/qgsgrassplugin.cpp | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/core/qgsproject.cpp b/src/core/qgsproject.cpp index 9fba4090d013..ca1933e8af29 100644 --- a/src/core/qgsproject.cpp +++ b/src/core/qgsproject.cpp @@ -1479,7 +1479,7 @@ QString QgsProject::writePath( QString src, QString relativeBasePath ) const QFileInfo srcFileInfo( src ); QFileInfo projFileInfo( fileName() ); - QString srcPath = srcFileInfo.canonicalFilePath(); + QString srcPath = srcFileInfo.exists() ? srcFileInfo.canonicalFilePath() : src; QString projPath = projFileInfo.canonicalFilePath(); if ( !relativeBasePath.isNull() ) diff --git a/src/plugins/grass/qgsgrassplugin.cpp b/src/plugins/grass/qgsgrassplugin.cpp index 4313b156d3ad..f272747c6b01 100644 --- a/src/plugins/grass/qgsgrassplugin.cpp +++ b/src/plugins/grass/qgsgrassplugin.cpp @@ -310,7 +310,7 @@ void QgsGrassPlugin::saveMapset() // Save working mapset in project file QgsProject::instance()->writeEntry( "GRASS", "/WorkingGisdbase", - QgsGrass::getDefaultGisdbase() ); + QgsProject::instance()->writePath( QgsGrass::getDefaultGisdbase() ) ); QgsProject::instance()->writeEntry( "GRASS", "/WorkingLocation", QgsGrass::getDefaultLocation() ); @@ -802,8 +802,10 @@ void QgsGrassPlugin::projectRead() QgsDebugMsg( "entered." ); bool ok; - QString gisdbase = QgsProject::instance()->readEntry( - "GRASS", "/WorkingGisdbase", "", &ok ).trimmed(); + QString gisdbase = QgsProject::instance()->readPath( + QgsProject::instance()->readEntry( + "GRASS", "/WorkingGisdbase", "", &ok ).trimmed() + ); QString location = QgsProject::instance()->readEntry( "GRASS", "/WorkingLocation", "", &ok ).trimmed(); QString mapset = QgsProject::instance()->readEntry(