Fix Project pane synchronization in case one opens first file via

Locator

Commit 38924e386 makes sure that the Project node is selected after
loading a new project, even when there is a current editor opened.

Make sure that we actually only block the sync if no new file is opened.

Done with mae.

Reviewed-by: mae
This commit is contained in:
Kai Koehne
2010-02-25 15:15:41 +01:00
parent 299ea32ab0
commit 30dfae9007
2 changed files with 12 additions and 5 deletions

View File

@@ -121,7 +121,7 @@ ProjectTreeWidget::ProjectTreeWidget(QWidget *parent)
m_model(0), m_model(0),
m_filterProjectsAction(0), m_filterProjectsAction(0),
m_autoSync(false), m_autoSync(false),
m_currentItemLocked(false) m_currentItemLocked(0)
{ {
m_model = new FlatModel(m_explorer->session()->sessionNode(), this); m_model = new FlatModel(m_explorer->session()->sessionNode(), this);
NodesWatcher *watcher = new NodesWatcher(this); NodesWatcher *watcher = new NodesWatcher(this);
@@ -251,9 +251,13 @@ void ProjectTreeWidget::setCurrentItem(Node *node, Project *project)
qDebug() << "ProjectTreeWidget::setCurrentItem(" << (project ? project->displayName() : "0") qDebug() << "ProjectTreeWidget::setCurrentItem(" << (project ? project->displayName() : "0")
<< ", " << (node ? node->path() : "0") << ")"; << ", " << (node ? node->path() : "0") << ")";
if (m_currentItemLocked) { if (m_currentItemLocked) {
m_currentItemLocked = false; if (m_currentItemLocked == node) {
m_currentItemLocked = 0;
return; return;
} }
m_currentItemLocked = 0;
}
if (!project) { if (!project) {
return; return;
} }
@@ -290,11 +294,14 @@ void ProjectTreeWidget::showContextMenu(const QPoint &pos)
void ProjectTreeWidget::handleProjectAdded(ProjectExplorer::Project *project) 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(); Node *node = project->rootProjectNode();
QModelIndex idx = m_model->indexForNode(node); QModelIndex idx = m_model->indexForNode(node);
m_view->setExpanded(idx, true); m_view->setExpanded(idx, true);
m_view->setCurrentIndex(idx); m_view->setCurrentIndex(idx);
m_currentItemLocked = true;
} }
void ProjectTreeWidget::startupProjectChanged(ProjectExplorer::Project *project) void ProjectTreeWidget::startupProjectChanged(ProjectExplorer::Project *project)

View File

@@ -89,7 +89,7 @@ private:
QModelIndex m_subIndex; QModelIndex m_subIndex;
QString m_modelId; QString m_modelId;
bool m_autoSync; bool m_autoSync;
bool m_currentItemLocked; Node *m_currentItemLocked;
friend class ProjectTreeWidgetFactory; friend class ProjectTreeWidgetFactory;
}; };