diff --git a/src/plugins/cppeditor/cppinsertdecldef.cpp b/src/plugins/cppeditor/cppinsertdecldef.cpp
index c6aad18336b4ec38a9b280c3159f588cd72ccb10..9158c2b481c4b7913389929fd5bc929033815cde 100644
--- a/src/plugins/cppeditor/cppinsertdecldef.cpp
+++ b/src/plugins/cppeditor/cppinsertdecldef.cpp
@@ -95,7 +95,9 @@ public:
         targetFile.change(target);
         targetFile.indent(Utils::ChangeSet::Range(targetPosition2, targetPosition1));
 
-        refactoring->activateEditor(m_targetFileName, targetPosition1);
+        const int prefixLineCount = loc.prefix().count(QLatin1Char('\n'));
+        refactoring->activateEditor(m_targetFileName, loc.line() + prefixLineCount,
+                                    qMax(((int) loc.column()) - 1, 0));
     }
 
 private:
diff --git a/src/plugins/texteditor/refactoringchanges.cpp b/src/plugins/texteditor/refactoringchanges.cpp
index 4bf0be8bed8971804125eabff3c5f0e885f2d541..3cc5118441390cc374af8a274ca10695d02aa5dc 100644
--- a/src/plugins/texteditor/refactoringchanges.cpp
+++ b/src/plugins/texteditor/refactoringchanges.cpp
@@ -43,7 +43,16 @@ RefactoringChanges::RefactoringChanges()
 {}
 
 RefactoringChanges::~RefactoringChanges()
-{}
+{
+    if (!m_fileToOpen.isEmpty()) {
+        BaseTextEditor *editor = editorForFile(m_fileToOpen, true);
+        editor->gotoLine(m_lineToOpen, m_columnToOpen);
+
+        Core::EditorManager *editorManager = Core::EditorManager::instance();
+        editorManager->activateEditor(editor->editableInterface(),
+                                      Core::EditorManager::ModeSwitch);
+    }
+}
 
 BaseTextEditor *RefactoringChanges::editorForFile(const QString &fileName,
                                                   bool openIfClosed)
@@ -156,14 +165,11 @@ BaseTextEditor *RefactoringChanges::openEditor(const QString &fileName, int pos)
     return editor;
 }
 
-BaseTextEditor *RefactoringChanges::activateEditor(const QString &fileName, int pos)
+void RefactoringChanges::activateEditor(const QString &fileName, int line, int column)
 {
-    BaseTextEditor *editor = openEditor(fileName, pos);
-
-    Core::EditorManager *editorManager = Core::EditorManager::instance();
-    editorManager->activateEditor(editor->editableInterface(), Core::EditorManager::ModeSwitch);
-
-    return editor;
+    m_fileToOpen = fileName;
+    m_lineToOpen = line;
+    m_columnToOpen = column;
 }
 
 
diff --git a/src/plugins/texteditor/refactoringchanges.h b/src/plugins/texteditor/refactoringchanges.h
index 257c7163d1480bdf3a4593cf096f12b933b2c620..09c6dc7dd141318b6634b8ce07606c6ca392f611 100644
--- a/src/plugins/texteditor/refactoringchanges.h
+++ b/src/plugins/texteditor/refactoringchanges.h
@@ -105,11 +105,12 @@ public:
 
     BaseTextEditor *openEditor(const QString &fileName, int pos = -1);
 
-    /**
-     * \param fileName the file to activate the editor for
-     * \param pos, 0-based offset to put the cursor on, -1 means don't move
+    /*!
+       \param fileName the file to activate the editor for
+       \param line the line to put the cursor on (1-based)
+       \param column the column to put the cursor on (1-based)
      */
-    BaseTextEditor *activateEditor(const QString &fileName, int pos = -1);
+    void activateEditor(const QString &fileName, int line, int column);
 
 
 private:
@@ -121,6 +122,11 @@ private:
     virtual void fileChanged(const QString &fileName) = 0;
 
     friend class RefactoringFile;
+
+private:
+    QString m_fileToOpen;
+    int m_lineToOpen;
+    int m_columnToOpen;
 };
 
 } // namespace TextEditor