diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index b89aba251322a11b0039de2353296e7f4a4468a1..682dd18d8d2df5138b54f8b8affef08692edb82e 100644 --- a/src/plugins/projectexplorer/projecttreewidget.cpp +++ b/src/plugins/projectexplorer/projecttreewidget.cpp @@ -121,7 +121,7 @@ ProjectTreeWidget::ProjectTreeWidget(QWidget *parent) m_model(0), m_filterProjectsAction(0), m_autoSync(false), - m_currentItemLocked(false) + m_currentItemLocked(0) { m_model = new FlatModel(m_explorer->session()->sessionNode(), this); NodesWatcher *watcher = new NodesWatcher(this); @@ -251,9 +251,13 @@ void ProjectTreeWidget::setCurrentItem(Node *node, Project *project) qDebug() << "ProjectTreeWidget::setCurrentItem(" << (project ? project->displayName() : "0") << ", " << (node ? node->path() : "0") << ")"; if (m_currentItemLocked) { - m_currentItemLocked = false; - return; + if (m_currentItemLocked == node) { + m_currentItemLocked = 0; + return; + } + m_currentItemLocked = 0; } + if (!project) { return; } @@ -290,11 +294,14 @@ void ProjectTreeWidget::showContextMenu(const QPoint &pos) void ProjectTreeWidget::handleProjectAdded(ProjectExplorer::Project *project) { + // We disable auto-synchronization for the current node so that the project + // is selected until another file is opened + m_currentItemLocked = m_model->nodeForIndex(m_view->currentIndex()); + Node *node = project->rootProjectNode(); QModelIndex idx = m_model->indexForNode(node); m_view->setExpanded(idx, true); m_view->setCurrentIndex(idx); - m_currentItemLocked = true; } void ProjectTreeWidget::startupProjectChanged(ProjectExplorer::Project *project) diff --git a/src/plugins/projectexplorer/projecttreewidget.h b/src/plugins/projectexplorer/projecttreewidget.h index 564a85de63d397d1672c8876e68a2c36bf1f85b5..9c8e07fe60bc1e35392a11f166827457a34f4e31 100644 --- a/src/plugins/projectexplorer/projecttreewidget.h +++ b/src/plugins/projectexplorer/projecttreewidget.h @@ -89,7 +89,7 @@ private: QModelIndex m_subIndex; QString m_modelId; bool m_autoSync; - bool m_currentItemLocked; + Node *m_currentItemLocked; friend class ProjectTreeWidgetFactory; };