Skip to content

Commit 9cd70c5

Browse files
committed
[layertree] Use writePath() for embedded groups (absolute vs relative path)
1 parent 48ee84b commit 9cd70c5

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/core/qgsproject.cpp

+19
Original file line numberDiff line numberDiff line change
@@ -999,6 +999,24 @@ void QgsProject::loadEmbeddedNodes( QgsLayerTreeGroup* group )
999999
}
10001000
}
10011001

1002+
void QgsProject::updateEmbeddedGroupsProjectPath( QgsLayerTreeGroup* group )
1003+
{
1004+
foreach ( QgsLayerTreeNode* node, group->children() )
1005+
{
1006+
if ( QgsLayerTree::isGroup( node ) )
1007+
{
1008+
if ( !node->customProperty( "embedded_project" ).toString().isEmpty() )
1009+
{
1010+
// may change from absolute path to relative path
1011+
QString newPath = writePath( node->customProperty( "embedded_project" ).toString() );
1012+
node->setCustomProperty( "embedded_project", newPath );
1013+
}
1014+
else
1015+
updateEmbeddedGroupsProjectPath( QgsLayerTree::toGroup( node ) );
1016+
}
1017+
}
1018+
}
1019+
10021020

10031021
bool QgsProject::read( QDomNode & layerNode )
10041022
{
@@ -1080,6 +1098,7 @@ bool QgsProject::write()
10801098
// write layer tree - make sure it is without embedded subgroups
10811099
QgsLayerTreeNode* clonedRoot = mRootGroup->clone();
10821100
QgsLayerTreeUtils::removeChildrenOfEmbeddedGroups( QgsLayerTree::toGroup( clonedRoot ) );
1101+
updateEmbeddedGroupsProjectPath( QgsLayerTree::toGroup( clonedRoot ) ); // convert absolute paths to relative paths if required
10831102
clonedRoot->writeXML( qgisNode );
10841103
delete clonedRoot;
10851104

src/core/qgsproject.h

+2
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,8 @@ class CORE_EXPORT QgsProject : public QObject
357357

358358
void loadEmbeddedNodes( QgsLayerTreeGroup* group );
359359

360+
void updateEmbeddedGroupsProjectPath( QgsLayerTreeGroup* group );
361+
360362
signals:
361363
//! emitted when project is being read
362364
void readProject( const QDomDocument & );

0 commit comments

Comments
 (0)