From 2978f08bfa899dcf0bddf678d964c68f57e46751 Mon Sep 17 00:00:00 2001 From: Daniel Teske <daniel.teske@digia.com> Date: Wed, 22 Oct 2014 15:15:54 +0200 Subject: [PATCH] New File Wizard: Fine tune selection of best node If the user right clicked on a node and invoked the new dialog that way, always consider that node even if it is deeper in the file system tree than the new files. Task-number: QTCREATORBUG-13215 Change-Id: Ic87033cb9a5e480eee8fb56eacad506d2fd39653 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com> --- src/plugins/projectexplorer/projectwizardpage.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/plugins/projectexplorer/projectwizardpage.cpp b/src/plugins/projectexplorer/projectwizardpage.cpp index f7bcbda1192..7da0fe82100 100644 --- a/src/plugins/projectexplorer/projectwizardpage.cpp +++ b/src/plugins/projectexplorer/projectwizardpage.cpp @@ -73,7 +73,7 @@ class BestNodeSelector { public: BestNodeSelector(const QString &commonDirectory, const QStringList &files); - void inspect(AddNewTree *tree); + void inspect(AddNewTree *tree, bool isContextNode); AddNewTree *bestChoice() const; bool deploys(); QString deployingProjects() const; @@ -102,7 +102,7 @@ BestNodeSelector::BestNodeSelector(const QString &commonDirectory, const QString // Otherwise consider their common path. Either a direct match on the directory // or the directory with the longest matching path (list containing"/project/subproject1" // matching common path "/project/subproject1/newuserpath"). -void BestNodeSelector::inspect(AddNewTree *tree) +void BestNodeSelector::inspect(AddNewTree *tree, bool isContextNode) { FolderNode *node = tree->node(); if (node->nodeType() == ProjectNodeType) { @@ -115,7 +115,7 @@ void BestNodeSelector::inspect(AddNewTree *tree) return; const QString projectDirectory = ProjectExplorerPlugin::directoryFor(node); const int projectDirectorySize = projectDirectory.size(); - if (!m_commonDirectory.startsWith(projectDirectory)) + if (!m_commonDirectory.startsWith(projectDirectory) && !isContextNode) return; bool betterMatch = tree->priority() > 0 && (projectDirectorySize > m_bestMatchLength @@ -173,7 +173,7 @@ static inline AddNewTree *buildAddProjectTree(ProjectNode *root, const QString & if (projectPath.isEmpty() || root->canAddSubProject(projectPath)) { FolderNode::AddNewInformation info = root->addNewInformation(QStringList() << projectPath, contextNode); AddNewTree *item = new AddNewTree(root, children, info); - selector->inspect(item); + selector->inspect(item, root == contextNode); return item; } } @@ -208,7 +208,7 @@ static inline AddNewTree *buildAddFilesTree(FolderNode *root, const QStringList if (list.contains(AddNewFile) && !list.contains(InheritedFromParent)) { FolderNode::AddNewInformation info = root->addNewInformation(files, contextNode); AddNewTree *item = new AddNewTree(root, children, info); - selector->inspect(item); + selector->inspect(item, root == contextNode); return item; } if (children.isEmpty()) -- GitLab