File tree 2 files changed +21
-0
lines changed
2 files changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -999,6 +999,24 @@ void QgsProject::loadEmbeddedNodes( QgsLayerTreeGroup* group )
999
999
}
1000
1000
}
1001
1001
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
+
1002
1020
1003
1021
bool QgsProject::read ( QDomNode & layerNode )
1004
1022
{
@@ -1080,6 +1098,7 @@ bool QgsProject::write()
1080
1098
// write layer tree - make sure it is without embedded subgroups
1081
1099
QgsLayerTreeNode* clonedRoot = mRootGroup ->clone ();
1082
1100
QgsLayerTreeUtils::removeChildrenOfEmbeddedGroups ( QgsLayerTree::toGroup ( clonedRoot ) );
1101
+ updateEmbeddedGroupsProjectPath ( QgsLayerTree::toGroup ( clonedRoot ) ); // convert absolute paths to relative paths if required
1083
1102
clonedRoot->writeXML ( qgisNode );
1084
1103
delete clonedRoot;
1085
1104
Original file line number Diff line number Diff line change @@ -357,6 +357,8 @@ class CORE_EXPORT QgsProject : public QObject
357
357
358
358
void loadEmbeddedNodes ( QgsLayerTreeGroup* group );
359
359
360
+ void updateEmbeddedGroupsProjectPath ( QgsLayerTreeGroup* group );
361
+
360
362
signals:
361
363
// ! emitted when project is being read
362
364
void readProject ( const QDomDocument & );
You can’t perform that action at this time.
0 commit comments