Show useful root directory when opening File System view

Show the active project's root directory.

Fixes: QTCREATORBUG-26297
Change-Id: Id66131582484e6d8d58ee67226bc1123609e5a7c
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Eike Ziller
2021-09-29 12:07:22 +02:00
parent 525039daeb
commit 258b4f7c23
3 changed files with 15 additions and 0 deletions

View File

@@ -98,6 +98,7 @@ static FolderNavigationWidgetFactory *m_instance = nullptr;
QVector<FolderNavigationWidgetFactory::RootDirectory>
FolderNavigationWidgetFactory::m_rootDirectories;
Utils::FilePath FolderNavigationWidgetFactory::m_fallbackSyncFilePath;
static QWidget *createHLine()
{
@@ -893,6 +894,8 @@ Core::NavigationView FolderNavigationWidgetFactory::createWidget()
&FolderNavigationWidgetFactory::rootDirectoryRemoved,
fnw,
&FolderNavigationWidget::removeRootDirectory);
if (!Core::EditorManager::currentDocument() && !m_fallbackSyncFilePath.isEmpty())
fnw->syncWithFilePath(m_fallbackSyncFilePath);
Core::NavigationView n;
n.widget = fnw;
@@ -965,6 +968,11 @@ void FolderNavigationWidgetFactory::removeRootDirectory(const QString &id)
emit m_instance->rootDirectoryRemoved(id);
}
void FolderNavigationWidgetFactory::setFallbackSyncFilePath(const FilePath &filePath)
{
m_fallbackSyncFilePath = filePath;
}
int FolderNavigationWidgetFactory::rootIndex(const QString &id)
{
return Utils::indexOf(m_rootDirectories,

View File

@@ -77,6 +77,10 @@ public:
static void insertRootDirectory(const RootDirectory &directory);
static void removeRootDirectory(const QString &id);
static void setFallbackSyncFilePath(const Utils::FilePath &filePath);
static const Utils::FilePath &fallbackSyncFilePath();
signals:
void rootDirectoryAdded(const RootDirectory &directory);
void rootDirectoryRemoved(const QString &id);
@@ -87,6 +91,7 @@ private:
void registerActions();
static QVector<RootDirectory> m_rootDirectories;
static Utils::FilePath m_fallbackSyncFilePath;
};
class FolderNavigationWidget : public QWidget

View File

@@ -386,6 +386,8 @@ void SessionManager::setStartupProject(Project *startupProject)
ModeManager::activateMode(Constants::MODE_SESSION);
ModeManager::setFocusToCurrentMode();
}
FolderNavigationWidgetFactory::setFallbackSyncFilePath(
startupProject ? startupProject->projectFilePath().parentDir() : FilePath());
emit m_instance->startupProjectChanged(startupProject);
}