Update project names in file system navigation pane

When the project reports a change in the display name we need to update
the drop down in the file system navigation pane as well.

Task-number: QTCREATORBUG-18972
Change-Id: Icfc0e6b2185f147bfc36589d8aea13a0966e8793
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Eike Ziller
2017-09-26 10:41:57 +02:00
parent f292a5e45b
commit f5f4ebff73

View File

@@ -118,6 +118,11 @@ private:
static SessionManager *m_instance = nullptr;
static SessionManagerPrivate *d = nullptr;
static QString projectFolderId(Project *pro)
{
return "P." + pro->displayName() + "." + pro->projectFilePath().toString();
}
SessionManager::SessionManager(QObject *parent) : QObject(parent)
{
m_instance = this;
@@ -386,12 +391,14 @@ void SessionManager::addProject(Project *pro)
m_instance, [pro]() { m_instance->projectDisplayNameChanged(pro); });
emit m_instance->projectAdded(pro);
const auto updateFolderNavigation = [pro] {
FolderNavigationWidgetFactory::insertRootDirectory(
{"P." + pro->displayName() + "." + pro->projectFilePath().toString(),
pro->displayName(),
pro->projectFilePath().parentDir()});
{projectFolderId(pro), pro->displayName(), pro->projectFilePath().parentDir()});
};
updateFolderNavigation();
configureEditors(pro);
connect(pro, &Project::fileListChanged, [pro](){ configureEditors(pro); });
connect(pro, &Project::displayNameChanged, pro, updateFolderNavigation);
}
void SessionManager::removeProject(Project *project)
@@ -744,8 +751,7 @@ void SessionManager::removeProjects(QList<Project *> remove)
m_instance, &SessionManager::clearProjectFileCache);
d->m_projectFileCache.remove(pro);
emit m_instance->projectRemoved(pro);
FolderNavigationWidgetFactory::removeRootDirectory("P." + pro->displayName() + "."
+ pro->projectFilePath().toString());
FolderNavigationWidgetFactory::removeRootDirectory(projectFolderId(pro));
delete pro;
}