forked from qt-creator/qt-creator
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:
@@ -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)
|
||||
|
||||
@@ -89,7 +89,6 @@ private:
|
||||
void updateFromFocus(bool invalidCurrentNode = false);
|
||||
|
||||
void updateExternalFileWarning();
|
||||
bool editorHasFocus();
|
||||
static bool hasFocus(Internal::ProjectTreeWidget *widget);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user