forked from qt-creator/qt-creator
Fix handling of current node if project tree view is hidden
I'm not 100% sure that this fixes the crash from QTCREATORBUG-12876. But it's clearly wrong to only check for removed nodes in the project tree widget and thus only if a tree widget is shown. Task-number: QTCREATORBUG-12876 Change-Id: Iaaafcef0fe408e8bc2f4d2b61133f4419a612d57 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
@@ -121,13 +121,6 @@ ProjectTreeWidget::ProjectTreeWidget(QWidget *parent)
|
||||
Project *pro = SessionManager::startupProject();
|
||||
if (pro)
|
||||
m_model->setStartupProject(pro->rootProjectNode());
|
||||
NodesWatcher *watcher = new NodesWatcher(this);
|
||||
SessionManager::sessionNode()->registerWatcher(watcher);
|
||||
|
||||
connect(watcher, SIGNAL(foldersAboutToBeRemoved(FolderNode*,QList<FolderNode*>)),
|
||||
this, SLOT(foldersAboutToBeRemoved(FolderNode*,QList<FolderNode*>)));
|
||||
connect(watcher, SIGNAL(filesAboutToBeRemoved(FolderNode*,QList<FileNode*>)),
|
||||
this, SLOT(filesAboutToBeRemoved(FolderNode*,QList<FileNode*>)));
|
||||
|
||||
m_view = new ProjectTreeView;
|
||||
m_view->setModel(m_model);
|
||||
@@ -279,32 +272,6 @@ void ProjectTreeWidget::recursiveSaveExpandData(const QModelIndex &index, QStrin
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectTreeWidget::foldersAboutToBeRemoved(FolderNode *, const QList<FolderNode*> &list)
|
||||
{
|
||||
Node *n = ProjectExplorerPlugin::currentNode();
|
||||
while (n) {
|
||||
if (FolderNode *fn = qobject_cast<FolderNode *>(n)) {
|
||||
if (list.contains(fn)) {
|
||||
ProjectNode *pn = n->projectNode();
|
||||
// Make sure the node we are switching too isn't going to be removed also
|
||||
while (list.contains(pn))
|
||||
pn = pn->parentFolderNode()->projectNode();
|
||||
ProjectExplorerPlugin::setCurrentNode(pn);
|
||||
break;
|
||||
}
|
||||
}
|
||||
n = n->parentFolderNode();
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectTreeWidget::filesAboutToBeRemoved(FolderNode *, const QList<FileNode*> &list)
|
||||
{
|
||||
if (FileNode *fileNode = qobject_cast<FileNode *>(ProjectExplorerPlugin::currentNode())) {
|
||||
if (list.contains(fileNode))
|
||||
ProjectExplorerPlugin::setCurrentNode(fileNode->projectNode());
|
||||
}
|
||||
}
|
||||
|
||||
QToolButton *ProjectTreeWidget::toggleSync()
|
||||
{
|
||||
return m_toggleSync;
|
||||
|
||||
Reference in New Issue
Block a user