From d3761d10e298fad7590acf27e55d89a18ab48337 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Thu, 29 Jul 2010 14:59:38 +0200 Subject: [PATCH] Use 1-based locations. --- src/plugins/cppeditor/cppdeclfromdef.cpp | 7 ++++--- src/plugins/texteditor/refactoringchanges.cpp | 18 ++++++++---------- src/plugins/texteditor/refactoringchanges.h | 15 ++++++++++----- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/plugins/cppeditor/cppdeclfromdef.cpp b/src/plugins/cppeditor/cppdeclfromdef.cpp index 034c478b112..8fb3d3278b8 100644 --- a/src/plugins/cppeditor/cppdeclfromdef.cpp +++ b/src/plugins/cppeditor/cppdeclfromdef.cpp @@ -93,9 +93,10 @@ public: Document::Ptr targetDoc = changes->document(m_targetFileName); InsertionPointLocator locator(targetDoc); const InsertionLocation loc = locator.methodDeclarationInClass(m_targetSymbol, InsertionPointLocator::Public); + Q_ASSERT(loc.isValid()); - int targetPosition1 = changes->positionInFile(m_targetFileName, loc.line() - 1, loc.column() - 1); - int targetPosition2 = changes->positionInFile(m_targetFileName, loc.line(), 0) - 1; + int targetPosition1 = changes->positionInFile(m_targetFileName, loc.line(), loc.column()); + int targetPosition2 = qMax(0, changes->positionInFile(m_targetFileName, loc.line(), 1) - 1); Utils::ChangeSet target; target.insert(targetPosition1, loc.prefix() + m_decl); @@ -104,7 +105,7 @@ public: changes->reindent(m_targetFileName, Utils::ChangeSet::Range(targetPosition1, targetPosition2)); - changes->openEditor(m_targetFileName, loc.line() - 1, loc.column() - 1); + changes->openEditor(m_targetFileName, loc.line(), loc.column()); } private: diff --git a/src/plugins/texteditor/refactoringchanges.cpp b/src/plugins/texteditor/refactoringchanges.cpp index 7bbb8b5c5ba..35209a94754 100644 --- a/src/plugins/texteditor/refactoringchanges.cpp +++ b/src/plugins/texteditor/refactoringchanges.cpp @@ -158,17 +158,20 @@ QStringList RefactoringChanges::apply() Core::EditorManager *editorManager = Core::EditorManager::instance(); BaseTextEditor *editor = editorForFile(m_fileNameToShow); editorManager->activateEditor(editor->editableInterface()); - if (m_lineToShow != -1) - editor->gotoLine(m_lineToShow + 1, m_columnToShow); + if (m_lineToShow != 0) { + editor->gotoLine(m_lineToShow, qMax(0, int(m_columnToShow) - 1)); + } } return changed.toList(); } -int RefactoringChanges::positionInFile(const QString &fileName, int line, int column) const +int RefactoringChanges::positionInFile(const QString &fileName, unsigned line, unsigned column) const { if (BaseTextEditor *editor = editorForFile(fileName, true)) { - return editor->document()->findBlockByNumber(line).position() + column; + Q_ASSERT(line != 0); + Q_ASSERT(column != 0); + return editor->document()->findBlockByNumber(line - 1).position() + column - 1; } else { return -1; } @@ -205,12 +208,7 @@ BaseTextEditor *RefactoringChanges::editorForNewFile(const QString &fileName) return editorForFile(fileName, true); } -/** - * \param fileName the file to open - * \param line the line to focus on, 0-based - * \param column the column to focus on, 0-based - */ -void RefactoringChanges::openEditor(const QString &fileName, int line, int column) +void RefactoringChanges::openEditor(const QString &fileName, unsigned line, unsigned column) { m_fileNameToShow = fileName; m_lineToShow = line; diff --git a/src/plugins/texteditor/refactoringchanges.h b/src/plugins/texteditor/refactoringchanges.h index e4a5cd6eb8c..2dccf2d11fe 100644 --- a/src/plugins/texteditor/refactoringchanges.h +++ b/src/plugins/texteditor/refactoringchanges.h @@ -67,22 +67,27 @@ public: */ virtual QStringList apply(); - int positionInFile(const QString &fileName, int line, int column = 0) const; + // 1-based + int positionInFile(const QString &fileName, unsigned line, unsigned column) const; static BaseTextEditor *editorForFile(const QString &fileName, bool openIfClosed = false); static BaseTextEditor *editorForNewFile(const QString &fileName); - /** line and column are zero-based */ - void openEditor(const QString &fileName, int line, int column); + /** + * \param fileName the file to open + * \param line the line to focus on, 1-based + * \param column the column to focus on, 1-based + */ + void openEditor(const QString &fileName, unsigned line, unsigned column); private: QMap<QString, QString> m_contentsByCreatedFile; QMap<QString, Utils::ChangeSet> m_changesByFile; QMap<QString, QList<Range> > m_indentRangesByFile; QString m_fileNameToShow; - int m_lineToShow; - int m_columnToShow; + unsigned m_lineToShow; + unsigned m_columnToShow; }; } // namespace TextEditor -- GitLab