aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2023-05-09 14:08:41 +0200
committerDavid Schulz <david.schulz@qt.io>2023-05-11 05:53:49 +0000
commit5b0c3258bb56fb4de71c28340857761641fe9aa7 (patch)
treef03eeb3eb04b86f5e37123fd88c46e218e1ca87d
parentedeea10e6a4aa2eeec50f6974495099520a66a47 (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.h4
-rw-r--r--src/libs/utils/textutils.cpp5
-rw-r--r--src/plugins/cppeditor/cppeditoroutline.cpp2
-rw-r--r--src/plugins/cppeditor/cppoutline.cpp5
-rw-r--r--src/plugins/cppeditor/cppoutlinemodel.cpp2
-rw-r--r--src/plugins/cppeditor/cppoutlinemodel.h1
-rw-r--r--tests/auto/utils/filepath/tst_filepath.cpp4
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)")