diff --git a/libqfieldsync/offline_converter.py b/libqfieldsync/offline_converter.py index ca6e218..9f69d38 100644 --- a/libqfieldsync/offline_converter.py +++ b/libqfieldsync/offline_converter.py @@ -280,8 +280,7 @@ def _convert(self, project: QgsProject) -> None: elif layer_action == SyncAction.REMOVE: project.removeMapLayer(layer) - project_layers_groups = project.layerTreeRoot() - self.remove_empty_groups_from_project(project_layers_groups) + self.remove_empty_tree_groups_from_project(project.layerTreeRoot()) export_project_filename = self._export_filename @@ -350,17 +349,17 @@ def _convert(self, project: QgsProject) -> None: QgsProject.instance().write(str(export_project_filename)) project.writeProject.disconnect(on_original_project_write) - def remove_empty_groups_from_project(self, group) -> None: + def remove_empty_tree_groups_from_project(self, group: QgsLayerTreeGroup) -> None: """ Recursively removes any empty groups from the given layer tree group. """ for child in group.children(): - if isinstance(child, QgsLayerTreeGroup): - self.remove_empty_groups_from_project(child) + if not isinstance(child, QgsLayerTreeGroup): + continue - if not child.children(): - print(f"Removing empty group: {child.name()}") - group.removeChildNode(child) + self.remove_empty_tree_groups_from_project(child) + if not child.children(): + group.removeChildNode(child) def post_process_offline_layers(self): project = QgsProject.instance()