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_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;
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)

View File

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