From f1de90c872f12876cd07b97ea5aa74fa83b8cd6e Mon Sep 17 00:00:00 2001 From: Erik Verbruggen <erik.verbruggen@nokia.com> Date: Thu, 23 Sep 2010 18:22:07 +0200 Subject: [PATCH] C++ Editor: fixed cursor positioning after quickfix action. --- src/plugins/cppeditor/cppinsertdecldef.cpp | 4 +++- src/plugins/texteditor/refactoringchanges.cpp | 22 ++++++++++++------- src/plugins/texteditor/refactoringchanges.h | 14 ++++++++---- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/plugins/cppeditor/cppinsertdecldef.cpp b/src/plugins/cppeditor/cppinsertdecldef.cpp index c6aad18336b..9158c2b481c 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 4bf0be8bed8..3cc51184413 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 257c7163d14..09c6dc7dd14 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 -- GitLab