diff options
author | David Schulz <david.schulz@qt.io> | 2023-05-09 14:08:41 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2023-05-11 05:53:49 +0000 |
commit | 5b0c3258bb56fb4de71c28340857761641fe9aa7 (patch) | |
tree | f03eeb3eb04b86f5e37123fd88c46e218e1ca87d | |
parent | edeea10e6a4aa2eeec50f6974495099520a66a47 (diff) |
Utils: Make column of LineColumn consistently 0-based
Change-Id: I4ab153d1c55653936efbcdc13ac04463185930e0
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
-rw-r--r-- | src/libs/utils/linecolumn.h | 4 | ||||
-rw-r--r-- | src/libs/utils/textutils.cpp | 5 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppeditoroutline.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppoutline.cpp | 5 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppoutlinemodel.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppoutlinemodel.h | 1 | ||||
-rw-r--r-- | tests/auto/utils/filepath/tst_filepath.cpp | 4 |
7 files changed, 11 insertions, 12 deletions
diff --git a/src/libs/utils/linecolumn.h b/src/libs/utils/linecolumn.h index 78a881d7f4..457ebd6a51 100644 --- a/src/libs/utils/linecolumn.h +++ b/src/libs/utils/linecolumn.h @@ -19,7 +19,7 @@ public: bool isValid() const { - return line >= 0 && column >= 0; + return line > 0 && column >= 0; } friend bool operator==(LineColumn first, LineColumn second) @@ -35,7 +35,7 @@ public: static LineColumn extractFromFileName(QStringView fileName, int &postfixPos); public: - int line = -1; + int line = 0; int column = -1; }; diff --git a/src/libs/utils/textutils.cpp b/src/libs/utils/textutils.cpp index ec440a8902..8b52d51d2c 100644 --- a/src/libs/utils/textutils.cpp +++ b/src/libs/utils/textutils.cpp @@ -60,7 +60,7 @@ OptionalLineColumn convertPosition(const QTextDocument *document, int pos) QTextBlock block = document->findBlock(pos); if (block.isValid()) - optional.emplace(block.blockNumber() + 1, pos - block.position() + 1); + optional.emplace(block.blockNumber() + 1, pos - block.position()); return optional; } @@ -180,8 +180,7 @@ LineColumn utf16LineColumn(const QByteArray &utf8Buffer, int utf8Offset) : 0; lineColumn.column = QString::fromUtf8( utf8Buffer.mid(startOfLineOffset, utf8Offset - startOfLineOffset)) - .length() - + 1; + .length(); return lineColumn; } diff --git a/src/plugins/cppeditor/cppeditoroutline.cpp b/src/plugins/cppeditor/cppeditoroutline.cpp index b0d14ca119..a3c9c363f9 100644 --- a/src/plugins/cppeditor/cppeditoroutline.cpp +++ b/src/plugins/cppeditor/cppeditoroutline.cpp @@ -152,7 +152,7 @@ void CppEditorOutline::updateIndexNow() int line = 0, column = 0; m_editorWidget->convertPosition(m_editorWidget->position(), &line, &column); - QModelIndex comboIndex = m_model->indexForPosition(line, column); + QModelIndex comboIndex = m_model->indexForPosition(line, column - 1); if (comboIndex.isValid()) { QSignalBlocker blocker(m_combo); diff --git a/src/plugins/cppeditor/cppoutline.cpp b/src/plugins/cppeditor/cppoutline.cpp index 8c28c7e30a..2efa370926 100644 --- a/src/plugins/cppeditor/cppoutline.cpp +++ b/src/plugins/cppeditor/cppoutline.cpp @@ -169,7 +169,7 @@ void CppOutlineWidget::updateIndexNow() int line = 0, column = 0; m_editor->convertPosition(m_editor->position(), &line, &column); - QModelIndex index = m_model->indexForPosition(line, column); + QModelIndex index = m_model->indexForPosition(line, column - 1); if (index.isValid()) { m_blockCursorSync = true; @@ -194,8 +194,7 @@ void CppOutlineWidget::updateTextCursor(const QModelIndex &proxyIndex) Core::EditorManager::cutForwardNavigationHistory(); Core::EditorManager::addCurrentPositionToNavigationHistory(); - // line has to be 1 based, column 0 based! - m_editor->gotoLine(lineColumn.line, lineColumn.column - 1, true, true); + m_editor->gotoLine(lineColumn.line, lineColumn.column, true, true); m_blockCursorSync = false; } diff --git a/src/plugins/cppeditor/cppoutlinemodel.cpp b/src/plugins/cppeditor/cppoutlinemodel.cpp index 2ce6f7dad0..660492b81c 100644 --- a/src/plugins/cppeditor/cppoutlinemodel.cpp +++ b/src/plugins/cppeditor/cppoutlinemodel.cpp @@ -246,7 +246,7 @@ Utils::LineColumn OutlineModel::lineColumnFromIndex(const QModelIndex &sourceInd if (!symbol) return lineColumn; lineColumn.line = symbol->line(); - lineColumn.column = symbol->column(); + lineColumn.column = symbol->column() - 1; return lineColumn; } diff --git a/src/plugins/cppeditor/cppoutlinemodel.h b/src/plugins/cppeditor/cppoutlinemodel.h index 08b7adb442..3afed56486 100644 --- a/src/plugins/cppeditor/cppoutlinemodel.h +++ b/src/plugins/cppeditor/cppoutlinemodel.h @@ -48,6 +48,7 @@ public: using Range = std::pair<Utils::LineColumn, Utils::LineColumn>; Range rangeFromIndex(const QModelIndex &sourceIndex) const; + // line is 1-based and column is 0-based QModelIndex indexForPosition(int line, int column, const QModelIndex &rootIndex = {}) const; private: diff --git a/tests/auto/utils/filepath/tst_filepath.cpp b/tests/auto/utils/filepath/tst_filepath.cpp index 6e11ddb71c..f2ecac2bb6 100644 --- a/tests/auto/utils/filepath/tst_filepath.cpp +++ b/tests/auto/utils/filepath/tst_filepath.cpp @@ -1095,7 +1095,7 @@ void tst_filepath::linkFromString_data() QTest::addColumn<int>("column"); QTest::newRow("no-line-no-column") - << QString("someFile.txt") << FilePath("someFile.txt") << -1 << -1; + << QString("someFile.txt") << FilePath("someFile.txt") << 0 << -1; QTest::newRow(": at end") << QString::fromLatin1("someFile.txt:") << FilePath("someFile.txt") << 0 << -1; QTest::newRow("+ at end") << QString::fromLatin1("someFile.txt+") << FilePath("someFile.txt") @@ -1121,7 +1121,7 @@ void tst_filepath::linkFromString_data() QTest::newRow("+line-+column") << QString::fromLatin1("/some/path/file.txt+142+33") << FilePath("/some/path/file.txt") << 142 << 32; QTest::newRow("( at end") << QString::fromLatin1("/some/path/file.txt(") - << FilePath("/some/path/file.txt") << -1 << -1; + << FilePath("/some/path/file.txt") << 0 << -1; QTest::newRow("(42 at end") << QString::fromLatin1("/some/path/file.txt(42") << FilePath("/some/path/file.txt") << 42 << -1; QTest::newRow("(42) at end") << QString::fromLatin1("/some/path/file.txt(42)") |