aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/projecttree.cpp
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2017-07-28 14:09:52 +0200
committerTim Jenssen <tim.jenssen@qt.io>2017-07-31 12:31:16 +0000
commite8c57c98d6f6af1abb70c98ad886f0af79103c0c (patch)
treef435f62b52385fa95a18db1c6e13c7a9fb6c7701 /src/plugins/projectexplorer/projecttree.cpp
parent73c7cb19cf463deb78b769177f31207a701303d5 (diff)
ProjectTree: keep lastFocusedProjectTreeWidget to get currentNode
Also remove currentNode checks from updateFromDocumentManager() We already checked for focus in the update() method. Change-Id: Id1bc28ce442b5b56597a675516ceea4fbc1801de Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/projecttree.cpp')
-rw-r--r--src/plugins/projectexplorer/projecttree.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp
index ab3c95da9c8..4d6c596377a 100644
--- a/src/plugins/projectexplorer/projecttree.cpp
+++ b/src/plugins/projectexplorer/projecttree.cpp
@@ -131,8 +131,13 @@ void ProjectTree::nodeChanged(ProjectTreeWidget *widget)
void ProjectTree::update()
{
ProjectTreeWidget *focus = m_focusForContextMenu;
- if (!focus)
+ static QPointer<ProjectTreeWidget> lastFocusedProjectTreeWidget;
+ if (!focus) {
focus = Utils::findOrDefault(m_projectTreeWidgets, &ProjectTree::hasFocus);
+ lastFocusedProjectTreeWidget = focus;
+ }
+ if (!focus)
+ focus = lastFocusedProjectTreeWidget;
if (focus)
updateFromProjectTreeWidget(focus);
@@ -150,16 +155,12 @@ void ProjectTree::updateFromProjectTreeWidget(ProjectTreeWidget *widget)
void ProjectTree::updateFromDocumentManager()
{
- Core::IDocument *document = Core::EditorManager::currentDocument();
- const FileName fileName = document ? document->filePath() : FileName();
-
- Node *currentNode = nullptr;
- if (m_currentNode && m_currentNode->filePath() == fileName)
- currentNode = m_currentNode;
- else
- currentNode = ProjectTreeWidget::nodeForFile(fileName);
-
- updateFromNode(currentNode);
+ if (Core::IDocument *document = Core::EditorManager::currentDocument()) {
+ const FileName fileName = document->filePath();
+ updateFromNode(ProjectTreeWidget::nodeForFile(fileName));
+ } else {
+ updateFromNode(nullptr);
+ }
}
void ProjectTree::updateFromNode(Node *node)