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