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