Fix bugtracker #95: collections pane shows "Untitled project" for a titleless project

The root of a project's embedded collection showed "Projet sans titre"
whenever the project had no title, while the project panel shows the
file name. Fall back to the file name the same way, and only use
"Projet sans titre" for a project that has neither.

The name was also computed once, so changing the project title or saving
it under a new name left the pane stale until the collections were
reloaded. Update it on projectTitleChanged and projectFilePathChanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ispyisail
2026-09-25 17:24:17 +12:00
parent 988357057f
commit 3a45625d69
4 changed files with 44 additions and 4 deletions
@@ -503,6 +503,10 @@ void ElementsCollectionModel::addProject(QETProject *project, bool set_data)
connect(project->embeddedElementCollection(),
&XmlElementCollection::directoryRemoved,
this, &ElementsCollectionModel::itemRemovedFromCollection);
connect(project, &QETProject::projectTitleChanged,
this, &ElementsCollectionModel::projectNameChanged);
connect(project, &QETProject::projectFilePathChanged,
this, &ElementsCollectionModel::projectNameChanged);
}
/**
@@ -534,6 +538,10 @@ void ElementsCollectionModel::removeProject(QETProject *project)
&XmlElementCollection::directoryRemoved,
this,
&ElementsCollectionModel::itemRemovedFromCollection);
disconnect(project, &QETProject::projectTitleChanged,
this, &ElementsCollectionModel::projectNameChanged);
disconnect(project, &QETProject::projectFilePathChanged,
this, &ElementsCollectionModel::projectNameChanged);
}
}
@@ -774,3 +782,15 @@ void ElementsCollectionModel::updateItem(const QString& path)
eci->setUpData();
}
}
/**
@brief ElementsCollectionModel::projectNameChanged
Update the displayed name of the collection of project,
when its title or its file path changed.
@param project
*/
void ElementsCollectionModel::projectNameChanged(QETProject *project)
{
if (XmlProjectElementCollectionItem *xpeci = m_project_hash.value(project))
xpeci->updateProjectName();
}