Fix before exit crash in ProjectTree

When there are 2 top level projects in session, crash happens in
foldersAboutToBeRemoved as currentNode() not properly updated and it
points to previously unloaded dangling node.

Change-Id: Ie3f88bdd03ec042ff1cce6712ed923465c902701
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
This commit is contained in:
Daniel Teske
2014-12-09 14:16:11 +03:00
parent a57d517202
commit 5bfd31f09c
2 changed files with 2 additions and 18 deletions

View File

@@ -135,20 +135,6 @@ void ProjectTree::focusChanged()
s_instance->updateFromFocus();
}
bool ProjectTree::editorHasFocus()
{
Core::IEditor *editor = Core::EditorManager::currentEditor();
if (!editor)
return false;
QWidget *widget = editor->widget();
if (!widget)
return false;
widget = widget->focusWidget();
if (!widget)
return false;
return widget->hasFocus();
}
void ProjectTree::updateFromFocus(bool invalidCurrentNode)
{
ProjectTreeWidget *focus = Utils::findOrDefault(s_instance->m_projectTreeWidgets,
@@ -156,7 +142,7 @@ void ProjectTree::updateFromFocus(bool invalidCurrentNode)
if (focus)
updateFromProjectTreeWidget(focus);
else if (editorHasFocus())
else
updateFromDocumentManager(invalidCurrentNode);
}
@@ -170,8 +156,7 @@ void ProjectTree::updateFromProjectTreeWidget(ProjectTreeWidget *widget)
void ProjectTree::documentManagerCurrentFileChanged()
{
if (editorHasFocus())
updateFromDocumentManager();
updateFromFocus();
}
Project *ProjectTree::projectForNode(Node *node)

View File

@@ -89,7 +89,6 @@ private:
void updateFromFocus(bool invalidCurrentNode = false);
void updateExternalFileWarning();
bool editorHasFocus();
static bool hasFocus(Internal::ProjectTreeWidget *widget);