diff --git a/src/plugins/coreplugin/foldernavigationwidget.cpp b/src/plugins/coreplugin/foldernavigationwidget.cpp index 4726b3264a4..52cae412877 100644 --- a/src/plugins/coreplugin/foldernavigationwidget.cpp +++ b/src/plugins/coreplugin/foldernavigationwidget.cpp @@ -299,6 +299,7 @@ FolderNavigationWidget::FolderNavigationWidget(QWidget *parent) : QWidget(parent m_listView->setEditTriggers(QAbstractItemView::NoEditTriggers); m_listView->setDragEnabled(true); m_listView->setDragDropMode(QAbstractItemView::DragOnly); + m_listView->viewport()->installEventFilter(this); showOnlyFirstColumn(m_listView); setFocusProxy(m_listView); @@ -521,6 +522,20 @@ void FolderNavigationWidget::syncWithFilePath(const Utils::FilePath &filePath) selectFile(filePath); } +bool FolderNavigationWidget::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == m_listView->viewport()) { + if (event->type() == QEvent::MouseButtonPress) { + // select the current root when clicking outside any other item + auto me = static_cast(event); + const QModelIndex index = m_listView->indexAt(me->pos()); + if (!index.isValid()) + m_listView->setCurrentIndex(m_listView->rootIndex()); + } + } + return false; +} + bool FolderNavigationWidget::autoSynchronization() const { return m_autoSync; diff --git a/src/plugins/coreplugin/foldernavigationwidget.h b/src/plugins/coreplugin/foldernavigationwidget.h index dbc3baec370..4cee261369a 100644 --- a/src/plugins/coreplugin/foldernavigationwidget.h +++ b/src/plugins/coreplugin/foldernavigationwidget.h @@ -130,6 +130,8 @@ public: void syncWithFilePath(const Utils::FilePath &filePath); + bool eventFilter(QObject *obj, QEvent *event) override; + protected: void contextMenuEvent(QContextMenuEvent *ev) override;