summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2014-11-27 10:49:18 +0100
committerNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2014-12-15 15:58:25 +0100
commitbe4a0306965aecc701b0890d5339ed7f596e7793 (patch)
tree54c055ca2245f64015b37f69db7c97e01eb0bf9b /src
parente3977de08eb5577222f01a9013185b036dee4564 (diff)
downloadqt-creator-be4a0306965aecc701b0890d5339ed7f596e7793.tar.gz
C++: handle case-insensitive file names in the WorkingCopy
... by keying on Utils::FileName Task-number: QTCREATORBUG-12390 Change-Id: Ia1a59d2e422b4f92300ac6a8e0e52dd7456a6e70 Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/libs/utils/fileutils.cpp5
-rw-r--r--src/libs/utils/fileutils.h1
-rw-r--r--src/plugins/clangcodemodel/clangutils.cpp12
-rw-r--r--src/plugins/cppeditor/cppcodemodelinspectordialog.cpp5
-rw-r--r--src/plugins/cpptools/cppcodemodelinspectordumper.cpp4
-rw-r--r--src/plugins/cpptools/cppmodelmanager_test.cpp4
-rw-r--r--src/plugins/cpptools/cppworkingcopy.h23
-rw-r--r--src/plugins/designer/qtcreatorintegration.cpp10
8 files changed, 45 insertions, 19 deletions
diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp
index 6d75342b99..1479a72d23 100644
--- a/src/libs/utils/fileutils.cpp
+++ b/src/libs/utils/fileutils.cpp
@@ -721,6 +721,11 @@ FileName &FileName::appendString(QChar str)
return *this;
}
+QTextStream &operator<<(QTextStream &s, const FileName &fn)
+{
+ return s << fn.toString();
+}
+
static bool isFileDrop(const QMimeData *d, QList<FileDropSupport::FileSpec> *files = 0)
{
// internal drop
diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h
index 4e2403322b..0a05451fd0 100644
--- a/src/libs/utils/fileutils.h
+++ b/src/libs/utils/fileutils.h
@@ -102,6 +102,7 @@ private:
FileName(const QString &string);
};
+QTCREATOR_UTILS_EXPORT QTextStream &operator<<(QTextStream &s, const FileName &fn);
class QTCREATOR_UTILS_EXPORT FileUtils {
public:
diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp
index f5d3daaa31..8bf2c8ea04 100644
--- a/src/plugins/clangcodemodel/clangutils.cpp
+++ b/src/plugins/clangcodemodel/clangutils.cpp
@@ -74,17 +74,17 @@ UnsavedFiles createUnsavedFiles(WorkingCopy workingCopy)
// TODO: change the modelmanager to hold one working copy, and amend it every time we ask for one.
// TODO: Reason: the UnsavedFile needs a QByteArray.
- QSet<QString> modifiedFiles;
+ QSet<::Utils::FileName> modifiedFiles;
foreach (IDocument *doc, Core::DocumentManager::modifiedDocuments())
- modifiedFiles.insert(doc->filePath());
+ modifiedFiles.insert(::Utils::FileName::fromString(doc->filePath()));
UnsavedFiles result;
- QHashIterator<QString, QPair<QByteArray, unsigned> > wcIter = workingCopy.iterator();
+ QHashIterator<::Utils::FileName, QPair<QByteArray, unsigned> > wcIter = workingCopy.iterator();
while (wcIter.hasNext()) {
wcIter.next();
- const QString &fileName = wcIter.key();
- if (modifiedFiles.contains(fileName) && QFile(fileName).exists())
- result.insert(fileName, wcIter.value().first);
+ const ::Utils::FileName &fileName = wcIter.key();
+ if (modifiedFiles.contains(fileName) && QFile(fileName.toString()).exists())
+ result.insert(fileName.toString(), wcIter.value().first);
}
return result;
diff --git a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp
index 9a3811cc2d..7c189f52e2 100644
--- a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp
+++ b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp
@@ -1087,10 +1087,11 @@ void WorkingCopyModel::configure(const WorkingCopy &workingCopy)
{
emit layoutAboutToBeChanged();
m_workingCopyList.clear();
- QHashIterator<QString, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
+ QHashIterator<Utils::FileName, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
while (it.hasNext()) {
it.next();
- m_workingCopyList << WorkingCopyEntry(it.key(), it.value().first, it.value().second);
+ m_workingCopyList << WorkingCopyEntry(it.key().toString(), it.value().first,
+ it.value().second);
}
emit layoutChanged();
}
diff --git a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
index 32c420b217..e0f44277c4 100644
--- a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
+++ b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
@@ -580,10 +580,10 @@ void Dumper::dumpWorkingCopy(const WorkingCopy &workingCopy)
m_out << "Working Copy contains " << workingCopy.size() << " entries{{{1\n";
const QByteArray i1 = indent(1);
- QHashIterator<QString, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
+ QHashIterator<::Utils::FileName, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
while (it.hasNext()) {
it.next();
- const QString filePath = it.key();
+ const ::Utils::FileName &filePath = it.key();
unsigned sourcRevision = it.value().second;
m_out << i1 << "rev=" << sourcRevision << ", " << filePath << "\n";
}
diff --git a/src/plugins/cpptools/cppmodelmanager_test.cpp b/src/plugins/cpptools/cppmodelmanager_test.cpp
index 0e7b35f364..bb0641a779 100644
--- a/src/plugins/cpptools/cppmodelmanager_test.cpp
+++ b/src/plugins/cpptools/cppmodelmanager_test.cpp
@@ -684,10 +684,10 @@ void CppToolsPlugin::test_modelmanager_extraeditorsupport_uiFiles()
QCOMPARE(workingCopy.size(), 2); // mm->configurationFileName() and "ui_*.h"
QStringList fileNamesInWorkinCopy;
- QHashIterator<QString, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
+ QHashIterator<Utils::FileName, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
while (it.hasNext()) {
it.next();
- fileNamesInWorkinCopy << QFileInfo(it.key()).fileName();
+ fileNamesInWorkinCopy << QFileInfo(it.key().toString()).fileName();
}
fileNamesInWorkinCopy.sort();
const QString expectedUiHeaderFileName = _("ui_mainwindow.h");
diff --git a/src/plugins/cpptools/cppworkingcopy.h b/src/plugins/cpptools/cppworkingcopy.h
index 4507c46127..088fd22a1e 100644
--- a/src/plugins/cpptools/cppworkingcopy.h
+++ b/src/plugins/cpptools/cppworkingcopy.h
@@ -33,6 +33,8 @@
#include "cpptools_global.h"
+#include <utils/fileutils.h>
+
#include <QHash>
#include <QString>
#include <QPair>
@@ -45,28 +47,43 @@ public:
WorkingCopy();
void insert(const QString &fileName, const QByteArray &source, unsigned revision = 0)
+ { insert(Utils::FileName::fromString(fileName), source, revision); }
+
+ void insert(const Utils::FileName &fileName, const QByteArray &source, unsigned revision = 0)
{ _elements.insert(fileName, qMakePair(source, revision)); }
bool contains(const QString &fileName) const
+ { return contains(Utils::FileName::fromString(fileName)); }
+
+ bool contains(const Utils::FileName &fileName) const
{ return _elements.contains(fileName); }
QByteArray source(const QString &fileName) const
+ { return source(Utils::FileName::fromString(fileName)); }
+
+ QByteArray source(const Utils::FileName &fileName) const
{ return _elements.value(fileName).first; }
unsigned revision(const QString &fileName) const
+ { return revision(Utils::FileName::fromString(fileName)); }
+
+ unsigned revision(const Utils::FileName &fileName) const
{ return _elements.value(fileName).second; }
QPair<QByteArray, unsigned> get(const QString &fileName) const
+ { return get(Utils::FileName::fromString(fileName)); }
+
+ QPair<QByteArray, unsigned> get(const Utils::FileName &fileName) const
{ return _elements.value(fileName); }
- QHashIterator<QString, QPair<QByteArray, unsigned> > iterator() const
- { return QHashIterator<QString, QPair<QByteArray, unsigned> >(_elements); }
+ QHashIterator<Utils::FileName, QPair<QByteArray, unsigned> > iterator() const
+ { return QHashIterator<Utils::FileName, QPair<QByteArray, unsigned> >(_elements); }
int size() const
{ return _elements.size(); }
private:
- typedef QHash<QString, QPair<QByteArray, unsigned> > Table;
+ typedef QHash<Utils::FileName, QPair<QByteArray, unsigned> > Table;
Table _elements;
};
diff --git a/src/plugins/designer/qtcreatorintegration.cpp b/src/plugins/designer/qtcreatorintegration.cpp
index 0abeb9a11f..75d5aef09e 100644
--- a/src/plugins/designer/qtcreatorintegration.cpp
+++ b/src/plugins/designer/qtcreatorintegration.cpp
@@ -537,12 +537,14 @@ bool QtCreatorIntegration::navigateToSlot(const QString &objectName,
} else {
const CppTools::WorkingCopy workingCopy =
CppTools::CppModelManager::instance()->workingCopy();
- QHashIterator<QString, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
+ const Utils::FileName configFileName =
+ Utils::FileName::fromString(CppTools::CppModelManager::configurationFileName());
+ QHashIterator<Utils::FileName, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
while (it.hasNext()) {
it.next();
- const QString fileName = it.key();
- if (fileName != CppTools::CppModelManager::configurationFileName())
- newDocTable.insert(docTable.document(fileName));
+ const Utils::FileName &fileName = it.key();
+ if (fileName != configFileName)
+ newDocTable.insert(docTable.document(fileName.toString()));
}
}
docTable = newDocTable;