summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kamm <christian.d.kamm@nokia.com>2010-08-12 14:18:36 +0200
committerChristian Kamm <christian.d.kamm@nokia.com>2010-08-12 14:21:35 +0200
commit03b443b86b51b31f907b2d4e565ae66144753539 (patch)
tree0b867b59edb80c4dd9073453bf63e3311b21a122
parent538f611503eb7c1a8f6c7a653bd9e8595be3515b (diff)
downloadqt-creator-03b443b86b51b31f907b2d4e565ae66144753539.tar.gz
QuickFix: Simplify getting a Document for a C++ refactoring.
-rw-r--r--src/plugins/cppeditor/cppdeclfromdef.cpp4
-rw-r--r--src/plugins/cppeditor/cpprefactoringchanges.cpp26
-rw-r--r--src/plugins/cppeditor/cpprefactoringchanges.h3
-rw-r--r--src/plugins/texteditor/refactoringchanges.cpp5
-rw-r--r--src/plugins/texteditor/refactoringchanges.h1
5 files changed, 13 insertions, 26 deletions
diff --git a/src/plugins/cppeditor/cppdeclfromdef.cpp b/src/plugins/cppeditor/cppdeclfromdef.cpp
index 8608da134e..c3f312a60c 100644
--- a/src/plugins/cppeditor/cppdeclfromdef.cpp
+++ b/src/plugins/cppeditor/cppdeclfromdef.cpp
@@ -84,12 +84,12 @@ public:
void performChanges(TextEditor::RefactoringFile *, CppRefactoringChanges *refactoring)
{
- Document::Ptr targetDoc = refactoring->document(m_targetFileName);
+ TextEditor::RefactoringFile targetFile = refactoring->file(m_targetFileName);
+ Document::Ptr targetDoc = refactoring->document(targetFile);
InsertionPointLocator locator(targetDoc);
const InsertionLocation loc = locator.methodDeclarationInClass(m_targetSymbol, m_xsSpec);
Q_ASSERT(loc.isValid());
- TextEditor::RefactoringFile targetFile = refactoring->file(m_targetFileName);
int targetPosition1 = targetFile.position(loc.line(), loc.column());
int targetPosition2 = qMax(0, targetFile.position(loc.line(), 1) - 1);
diff --git a/src/plugins/cppeditor/cpprefactoringchanges.cpp b/src/plugins/cppeditor/cpprefactoringchanges.cpp
index 6b500a73f0..6ed6657865 100644
--- a/src/plugins/cppeditor/cpprefactoringchanges.cpp
+++ b/src/plugins/cppeditor/cpprefactoringchanges.cpp
@@ -63,33 +63,13 @@ const LookupContext &CppRefactoringChanges::context() const
return m_context;
}
-Document::Ptr CppRefactoringChanges::document(const QString &fileName) const
+Document::Ptr CppRefactoringChanges::document(const TextEditor::RefactoringFile &file) const
{
- QString source;
- unsigned editorRevision = 0;
- QDateTime lastModified;
-
- if (m_workingCopy.contains(fileName)) {
- const QPair<QString, unsigned> workingCopy = m_workingCopy.get(fileName);
- source = workingCopy.first;
- editorRevision = workingCopy.second;
- } else {
- QFile file(fileName);
- if (! file.open(QFile::ReadOnly))
- return Document::Ptr();
-
- lastModified = QFileInfo(file).lastModified();
- source = QTextStream(&file).readAll(); // ### FIXME read bytes, and remove the convert below
- file.close();
- }
+ QString source = file.document()->toPlainText();
+ QString fileName = file.fileName();
const QByteArray contents = m_snapshot.preprocessedCode(source, fileName);
Document::Ptr doc = m_snapshot.documentFromSource(contents, fileName);
-
- if (lastModified.isValid())
- doc->setLastModified(lastModified);
- else
- doc->setEditorRevision(editorRevision);
doc->check();
return doc;
diff --git a/src/plugins/cppeditor/cpprefactoringchanges.h b/src/plugins/cppeditor/cpprefactoringchanges.h
index cedb68bef2..7c8d136879 100644
--- a/src/plugins/cppeditor/cpprefactoringchanges.h
+++ b/src/plugins/cppeditor/cpprefactoringchanges.h
@@ -48,9 +48,10 @@ public:
CPlusPlus::Document::Ptr thisDocument() const;
const CPlusPlus::Snapshot &snapshot() const;
- CPlusPlus::Document::Ptr document(const QString &fileName) const;
const CPlusPlus::LookupContext &context() const;
+ CPlusPlus::Document::Ptr document(const TextEditor::RefactoringFile &file) const;
+
private:
virtual void indentSelection(const QTextCursor &selection) const;
virtual void fileChanged(const QString &fileName);
diff --git a/src/plugins/texteditor/refactoringchanges.cpp b/src/plugins/texteditor/refactoringchanges.cpp
index 9f0575b8af..0d2d3a458c 100644
--- a/src/plugins/texteditor/refactoringchanges.cpp
+++ b/src/plugins/texteditor/refactoringchanges.cpp
@@ -270,6 +270,11 @@ const QTextCursor RefactoringFile::cursor() const
return QTextCursor();
}
+QString RefactoringFile::fileName() const
+{
+ return m_fileName;
+}
+
int RefactoringFile::position(unsigned line, unsigned column) const
{
Q_ASSERT(line != 0);
diff --git a/src/plugins/texteditor/refactoringchanges.h b/src/plugins/texteditor/refactoringchanges.h
index 267ed2e6e2..fc67d43f85 100644
--- a/src/plugins/texteditor/refactoringchanges.h
+++ b/src/plugins/texteditor/refactoringchanges.h
@@ -57,6 +57,7 @@ public:
const QTextDocument *document() const;
const QTextCursor cursor() const;
+ QString fileName() const;
// converts 1-based line and column into 0-based offset
int position(unsigned line, unsigned column) const;