diff --git a/src/plugins/cppeditor/cpprefactoringchanges.cpp b/src/plugins/cppeditor/cpprefactoringchanges.cpp
index 6d6e095e62d80b6a3e1e6f7420b1d6e22d0c8ea9..196ce53fd40fe7dc4b90cdf26f2c4bff87bb65f3 100644
--- a/src/plugins/cppeditor/cpprefactoringchanges.cpp
+++ b/src/plugins/cppeditor/cpprefactoringchanges.cpp
@@ -42,6 +42,12 @@ CppRefactoringChanges::CppRefactoringChanges(const Snapshot &snapshot)
     m_workingCopy = m_modelManager->workingCopy();
 }
 
+const CPlusPlus::Snapshot &CppRefactoringChanges::snapshot() const
+{
+    return m_snapshot;
+}
+
+
 QStringList CppRefactoringChanges::apply()
 {
     const QStringList changedFiles = TextEditor::RefactoringChanges::apply();
@@ -53,6 +59,8 @@ Document::Ptr CppRefactoringChanges::document(const QString &fileName) 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;
@@ -62,13 +70,19 @@ Document::Ptr CppRefactoringChanges::document(const QString &fileName) const
         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();
     }
 
     const QByteArray contents = m_snapshot.preprocessedCode(source, fileName);
     Document::Ptr doc = m_snapshot.documentFromSource(contents, fileName);
-    doc->setEditorRevision(editorRevision);
+
+    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 9b684772f20dd3ddb056c39ebdb049b37abb0d2e..147d9014a1a16a5a1645e6a4e7d4e5d47839fd9d 100644
--- a/src/plugins/cppeditor/cpprefactoringchanges.h
+++ b/src/plugins/cppeditor/cpprefactoringchanges.h
@@ -46,9 +46,7 @@ public:
 
     virtual QStringList apply();
 
-    const CPlusPlus::Snapshot &snapshot() const
-    { return m_snapshot; }
-
+    const CPlusPlus::Snapshot &snapshot() const;
     CPlusPlus::Document::Ptr document(const QString &fileName) const;
 
 private: