Commit 1c6394b8 authored by Daniel Teske's avatar Daniel Teske Committed by Eike Ziller
Browse files

New File Dialog: Tweak default node on Projct Page



The case from the bug report is:
/
 --> project.pro
 --> src
     --> foo.qrc
     --> folder
         --> file added here

Since the .qrc file is nearer then the .pro file, it was selected as the default node.
This patch makes the priority for the .qrc node -1 if it's a unmatched mime type.
That means a .qrc node will only be the default if it's either a image, a .qml or a .js
file.

Task-number: QTCREATORBUG-12793
Change-Id: I7328fd6359cc2e1959ab0bda831bd77de117baff
Reviewed-by: default avatarEike Ziller <eike.ziller@digia.com>
parent f6dab5c0
...@@ -136,8 +136,10 @@ void BestNodeSelector::inspect(AddNewTree *tree) ...@@ -136,8 +136,10 @@ void BestNodeSelector::inspect(AddNewTree *tree)
const int projectDirectorySize = projectDirectory.size(); const int projectDirectorySize = projectDirectory.size();
if (!m_commonDirectory.startsWith(projectDirectory)) if (!m_commonDirectory.startsWith(projectDirectory))
return; return;
bool betterMatch = projectDirectorySize > m_bestMatchLength bool betterMatch = tree->priority() > 0
|| (projectDirectorySize == m_bestMatchLength && tree->priority() > m_bestMatchPriority); && (projectDirectorySize > m_bestMatchLength
|| (projectDirectorySize == m_bestMatchLength && tree->priority() > m_bestMatchPriority));
if (betterMatch) { if (betterMatch) {
m_bestMatchPriority = tree->priority(); m_bestMatchPriority = tree->priority();
m_bestMatchLength = projectDirectorySize; m_bestMatchLength = projectDirectorySize;
......
...@@ -256,10 +256,11 @@ ProjectExplorer::FolderNode::AddNewInformation ResourceTopLevelNode::addNewInfor ...@@ -256,10 +256,11 @@ ProjectExplorer::FolderNode::AddNewInformation ResourceTopLevelNode::addNewInfor
.arg(QFileInfo(path()).fileName()) .arg(QFileInfo(path()).fileName())
.arg(QLatin1String("/")); .arg(QLatin1String("/"));
int p = 80; int p = -1;
if (priority(files)) { if (priority(files)) { // images/* and qml/js mimetypes
if (context == 0 || context == this) p = 110;
p = 125; if (context == this)
p = 120;
else if (projectNode() == context) else if (projectNode() == context)
p = 150; // steal from our project node p = 150; // steal from our project node
// The ResourceFolderNode '/' defers to us, as otherwise // The ResourceFolderNode '/' defers to us, as otherwise
...@@ -267,7 +268,7 @@ ProjectExplorer::FolderNode::AddNewInformation ResourceTopLevelNode::addNewInfor ...@@ -267,7 +268,7 @@ ProjectExplorer::FolderNode::AddNewInformation ResourceTopLevelNode::addNewInfor
// Thus also return a high priority for it // Thus also return a high priority for it
if (ResourceFolderNode *rfn = qobject_cast<ResourceFolderNode *>(context)) if (ResourceFolderNode *rfn = qobject_cast<ResourceFolderNode *>(context))
if (rfn->prefix() == QLatin1String("/") && rfn->parentFolderNode() == this) if (rfn->prefix() == QLatin1String("/") && rfn->parentFolderNode() == this)
p = 150; p = 120;
} }
return AddNewInformation(name, p); return AddNewInformation(name, p);
...@@ -389,9 +390,10 @@ ProjectExplorer::FolderNode::AddNewInformation ResourceFolderNode::addNewInforma ...@@ -389,9 +390,10 @@ ProjectExplorer::FolderNode::AddNewInformation ResourceFolderNode::addNewInforma
.arg(QFileInfo(m_topLevelNode->path()).fileName()) .arg(QFileInfo(m_topLevelNode->path()).fileName())
.arg(displayName()); .arg(displayName());
int p = 80; int p = -1; // never the default
if (priority(files)) { if (priority(files)) { // image/* and qml/js mimetypes
if (context == 0 || context == this) p = 105; // prefer against .pro and .pri files
if (context == this)
p = 120; p = 120;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment