summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2018-11-02 14:17:12 +0100
committerIvan Donchevskii <ivan.donchevskii@qt.io>2018-11-09 08:51:21 +0000
commit8469e317c9c02bc9760a69ecadb79f396a541eb8 (patch)
treef640379bc065daa8dcf876cf4eb0e311ed8db188 /src
parent3d939458408d0d61d8f9b05e9b5caec4bc7a6c1b (diff)
downloadqt-creator-8469e317c9c02bc9760a69ecadb79f396a541eb8.tar.gz
Utils: Adjust column numbers affected by convertPosition change
convertPosition change was introduced in 931ec39f64a. It changed 0-based column to 1-based which is how it naturally is in Qt Creator. This fixed some usages but broke many more. This is an attempt to fix the remaining use cases. Fixes CppEditor auto-tests. Change-Id: Ia8d14da0ebb035cd2fdd6da4ff6ec89c1c5121a8 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/clangcodemodel/clangfollowsymbol.cpp14
-rw-r--r--src/plugins/classview/classviewmanager.cpp5
-rw-r--r--src/plugins/classview/classviewparser.cpp4
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeeditor.cpp6
-rw-r--r--src/plugins/cppeditor/cppuseselections_test.cpp3
-rw-r--r--src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp8
-rw-r--r--src/plugins/cpptools/builtincursorinfo.cpp6
-rw-r--r--src/plugins/cpptools/builtineditordocumentprocessor.cpp1
-rw-r--r--src/plugins/cpptools/cppcanonicalsymbol.cpp3
-rw-r--r--src/plugins/cpptools/cppcompletionassist.cpp11
-rw-r--r--src/plugins/cpptools/cppcompletionassist.h2
-rw-r--r--src/plugins/cpptools/cppelementevaluator.cpp2
-rw-r--r--src/plugins/cpptools/cppfollowsymbolundercursor.cpp32
-rw-r--r--src/plugins/debugger/analyzer/analyzerutils.cpp2
-rw-r--r--src/plugins/designer/qtcreatorintegration.cpp3
-rw-r--r--src/plugins/qmakeprojectmanager/profileeditor.cpp6
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp3
-rw-r--r--src/plugins/qmldesigner/components/texteditor/texteditorwidget.cpp7
-rw-r--r--src/plugins/qmldesigner/qmldesignerplugin.cpp3
-rw-r--r--src/plugins/texteditor/texteditor.cpp11
20 files changed, 72 insertions, 60 deletions
diff --git a/src/plugins/clangcodemodel/clangfollowsymbol.cpp b/src/plugins/clangcodemodel/clangfollowsymbol.cpp
index 3e85ebc8d9..c430c810c3 100644
--- a/src/plugins/clangcodemodel/clangfollowsymbol.cpp
+++ b/src/plugins/clangcodemodel/clangfollowsymbol.cpp
@@ -163,13 +163,10 @@ void ClangFollowSymbol::findLink(const CppTools::CursorInEditor &data,
CppTools::SymbolFinder *symbolFinder,
bool inNextSplit)
{
- int lineNumber = 0, positionInBlock = 0;
+ int line = 0;
+ int column = 0;
QTextCursor cursor = Utils::Text::wordStartCursor(data.cursor());
- Utils::Text::convertPosition(cursor.document(), cursor.position(), &lineNumber,
- &positionInBlock);
-
- const uint line = lineNumber;
- const uint column = positionInBlock + 1;
+ Utils::Text::convertPosition(cursor.document(), cursor.position(), &line, &column);
ClangEditorDocumentProcessor *processor = ClangEditorDocumentProcessor::get(
data.filePath().toString());
@@ -177,7 +174,10 @@ void ClangFollowSymbol::findLink(const CppTools::CursorInEditor &data,
return processLinkCallback(Utils::Link());
if (!resolveTarget) {
- processLinkCallback(linkAtCursor(cursor, data.filePath().toString(), line, column,
+ processLinkCallback(linkAtCursor(cursor,
+ data.filePath().toString(),
+ static_cast<uint>(line),
+ static_cast<uint>(column),
processor));
return;
}
diff --git a/src/plugins/classview/classviewmanager.cpp b/src/plugins/classview/classviewmanager.cpp
index 2b3b839cda..de4b1450c5 100644
--- a/src/plugins/classview/classviewmanager.cpp
+++ b/src/plugins/classview/classviewmanager.cpp
@@ -423,7 +423,7 @@ void Manager::onDocumentUpdated(CPlusPlus::Document::Ptr doc)
/*!
Opens the text editor for the file \a fileName on \a line (1-based) and
- \a column (1-based).
+ \a column (0-based).
*/
void Manager::gotoLocation(const QString &fileName, int line, int column)
@@ -468,7 +468,8 @@ void Manager::gotoLocations(const QList<QVariant> &list)
}
}
}
- gotoLocation(loc.fileName(), loc.line(), loc.column());
+ // line is 1-based, column is 0-based
+ gotoLocation(loc.fileName(), loc.line(), loc.column() - 1);
}
/*!
diff --git a/src/plugins/classview/classviewparser.cpp b/src/plugins/classview/classviewparser.cpp
index e206b180a1..edf7a038ce 100644
--- a/src/plugins/classview/classviewparser.cpp
+++ b/src/plugins/classview/classviewparser.cpp
@@ -369,9 +369,9 @@ void Parser::addSymbol(const ParserTreeItem::Ptr &item, const CPlusPlus::Symbol
if (itemAdd.isNull())
itemAdd = ParserTreeItem::Ptr(new ParserTreeItem());
- // locations are 1-based in Symbol, start with 0 for the editor
+ // locations have 1-based column in Symbol, use the same here.
SymbolLocation location(QString::fromUtf8(symbol->fileName() , symbol->fileNameLength()),
- symbol->line(), symbol->column() - 1);
+ symbol->line(), symbol->column());
itemAdd->addSymbolLocation(location);
// prevent showing a content of the functions
diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
index a1b529e3e9..122569616e 100644
--- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
@@ -146,8 +146,10 @@ void CMakeEditorWidget::findLinkAt(const QTextCursor &cursor,
{
Utils::Link link;
- int lineNumber = 0, positionInBlock = 0;
- convertPosition(cursor.position(), &lineNumber, &positionInBlock);
+ int line = 0;
+ int column = 0;
+ convertPosition(cursor.position(), &line, &column);
+ const int positionInBlock = column - 1;
const QString block = cursor.block().text();
diff --git a/src/plugins/cppeditor/cppuseselections_test.cpp b/src/plugins/cppeditor/cppuseselections_test.cpp
index 8de8048a89..99674b2e3c 100644
--- a/src/plugins/cppeditor/cppuseselections_test.cpp
+++ b/src/plugins/cppeditor/cppuseselections_test.cpp
@@ -31,6 +31,7 @@
#include <QElapsedTimer>
#include <QtTest>
+// Uses 1-based line and 0-based column.
struct Selection {
Selection(int line, int column, int length) : line(line), column(column), length(length) {}
int line;
@@ -116,7 +117,7 @@ SelectionList UseSelectionsTestCase::toSelectionList(
int line, column;
const int position = qMin(selection.cursor.position(), selection.cursor.anchor());
m_editorWidget->convertPosition(position, &line, &column);
- result << Selection(line, column, selection.cursor.selectedText().length());
+ result << Selection(line, column - 1, selection.cursor.selectedText().length());
}
return result;
}
diff --git a/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp b/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp
index 3ac121d918..8d30cfbd43 100644
--- a/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp
+++ b/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp
@@ -317,7 +317,7 @@ F2TestCase::F2TestCase(CppEditorAction action,
initialTestFile->m_editor->setCursorPosition(initialTestFile->m_cursorPosition);
// qDebug() << "Initial line:" << initialTestFile->editor->currentLine();
-// qDebug() << "Initial column:" << initialTestFile->editor->currentColumn() - 1;
+// qDebug() << "Initial column:" << initialTestFile->editor->currentColumn();
OverrideItemList immediateVirtualSymbolResults;
OverrideItemList finalVirtualSymbolResults;
@@ -338,7 +338,7 @@ F2TestCase::F2TestCase(CppEditorAction action,
QSKIP((curTestName + " is not supported by Clang FollowSymbol").toLatin1());
}
- initialTestFile->m_editorWidget->openLinkUnderCursor();
+ widget->openLinkUnderCursor();
break;
}
@@ -349,7 +349,7 @@ F2TestCase::F2TestCase(CppEditorAction action,
QSharedPointer<VirtualFunctionTestAssistProvider> testProvider(
new VirtualFunctionTestAssistProvider(widget));
builtinFollowSymbol->setVirtualFunctionAssistProvider(testProvider);
- initialTestFile->m_editorWidget->openLinkUnderCursor();
+ widget->openLinkUnderCursor();
immediateVirtualSymbolResults = testProvider->m_immediateItems;
finalVirtualSymbolResults = testProvider->m_finalItems;
@@ -382,7 +382,7 @@ F2TestCase::F2TestCase(CppEditorAction action,
QEXPECT_FAIL("globalVarFromEnum", "Contributor works on a fix.", Abort);
QEXPECT_FAIL("matchFunctionSignature_Follow_5", "foo(int) resolved as CallAST", Abort);
QCOMPARE(currentTextEditor->currentLine(), expectedLine);
- QCOMPARE(currentTextEditor->currentColumn() - 1, expectedColumn);
+ QCOMPARE(currentTextEditor->currentColumn(), expectedColumn);
// qDebug() << immediateVirtualSymbolResults;
// qDebug() << finalVirtualSymbolResults;
diff --git a/src/plugins/cpptools/builtincursorinfo.cpp b/src/plugins/cpptools/builtincursorinfo.cpp
index 4522af15a9..85603ba090 100644
--- a/src/plugins/cpptools/builtincursorinfo.cpp
+++ b/src/plugins/cpptools/builtincursorinfo.cpp
@@ -184,8 +184,9 @@ private:
{
CursorInfo result;
+ // findLocalUses operates with 1-based line and 0-based column
const CppTools::SemanticInfo::LocalUseMap localUses
- = BuiltinCursorInfo::findLocalUses(m_document, m_line, m_column);
+ = BuiltinCursorInfo::findLocalUses(m_document, m_line, m_column - 1);
result.localUses = localUses;
splitLocalUses(localUses, &result.useRanges, &result.unusedVariablesRanges);
@@ -216,8 +217,7 @@ private:
bool good = false;
foreach (const CppTools::SemanticInfo::Use &use, uses) {
unsigned l = static_cast<unsigned>(m_line);
- // convertCursorPosition() returns a 0-based column number.
- unsigned c = static_cast<unsigned>(m_column + 1);
+ unsigned c = static_cast<unsigned>(m_column);
if (l == use.line && c >= use.column && c <= (use.column + use.length)) {
good = true;
break;
diff --git a/src/plugins/cpptools/builtineditordocumentprocessor.cpp b/src/plugins/cpptools/builtineditordocumentprocessor.cpp
index 684f765eac..d5bfa51020 100644
--- a/src/plugins/cpptools/builtineditordocumentprocessor.cpp
+++ b/src/plugins/cpptools/builtineditordocumentprocessor.cpp
@@ -112,7 +112,6 @@ CppTools::CheckSymbols *createHighlighter(const CPlusPlus::Document::Ptr &doc,
int line, column;
convertPosition(textDocument, macro.utf16CharOffset(), &line, &column);
- ++column; //Highlighting starts at (column-1) --> compensate here
Result use(line, column, macro.nameToQString().size(), SemanticHighlighter::MacroUse);
macroUses.append(use);
}
diff --git a/src/plugins/cpptools/cppcanonicalsymbol.cpp b/src/plugins/cpptools/cppcanonicalsymbol.cpp
index 3f1869de63..fa5d074921 100644
--- a/src/plugins/cpptools/cppcanonicalsymbol.cpp
+++ b/src/plugins/cpptools/cppcanonicalsymbol.cpp
@@ -60,7 +60,6 @@ Scope *CanonicalSymbol::getScopeAndExpression(const QTextCursor &cursor, QString
QTextCursor tc = cursor;
int line, column;
Utils::Text::convertPosition(cursor.document(), tc.position(), &line, &column);
- ++column; // 1-based line and 1-based column
int pos = tc.position();
QTextDocument *textDocument = cursor.document();
@@ -74,7 +73,7 @@ Scope *CanonicalSymbol::getScopeAndExpression(const QTextCursor &cursor, QString
ExpressionUnderCursor expressionUnderCursor(m_document->languageFeatures());
*code = expressionUnderCursor(tc);
- return m_document->scopeAt(line, column);
+ return m_document->scopeAt(line, column - 1);
}
Symbol *CanonicalSymbol::operator()(const QTextCursor &cursor)
diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp
index af4372a458..87bc2df0b4 100644
--- a/src/plugins/cpptools/cppcompletionassist.cpp
+++ b/src/plugins/cpptools/cppcompletionassist.cpp
@@ -1092,7 +1092,7 @@ int InternalCppCompletionAssistProcessor::startCompletionHelper()
int line = 0, column = 0;
Utils::Text::convertPosition(m_interface->textDocument(), startOfExpression, &line, &column);
const QString fileName = m_interface->fileName();
- return startCompletionInternal(fileName, line, column, expression, endOfExpression);
+ return startCompletionInternal(fileName, line, column - 1, expression, endOfExpression);
}
bool InternalCppCompletionAssistProcessor::tryObjCCompletion()
@@ -1125,7 +1125,7 @@ bool InternalCppCompletionAssistProcessor::tryObjCCompletion()
int line = 0, column = 0;
Utils::Text::convertPosition(m_interface->textDocument(), m_interface->position(), &line,
&column);
- Scope *scope = thisDocument->scopeAt(line, column);
+ Scope *scope = thisDocument->scopeAt(line, column - 1);
if (!scope)
return false;
@@ -1319,7 +1319,8 @@ bool InternalCppCompletionAssistProcessor::objcKeywordsWanted() const
}
int InternalCppCompletionAssistProcessor::startCompletionInternal(const QString &fileName,
- unsigned line, unsigned column,
+ unsigned line,
+ unsigned positionInBlock,
const QString &expr,
int endOfExpression)
{
@@ -1331,7 +1332,7 @@ int InternalCppCompletionAssistProcessor::startCompletionInternal(const QString
m_model->m_typeOfExpression->init(thisDocument, m_interface->snapshot());
- Scope *scope = thisDocument->scopeAt(line, column);
+ Scope *scope = thisDocument->scopeAt(line, positionInBlock);
QTC_ASSERT(scope != 0, return -1);
if (expression.isEmpty()) {
@@ -2016,7 +2017,7 @@ bool InternalCppCompletionAssistProcessor::completeConstructorOrFunction(const Q
int lineSigned = 0, columnSigned = 0;
Utils::Text::convertPosition(m_interface->textDocument(), m_interface->position(),
&lineSigned, &columnSigned);
- unsigned line = lineSigned, column = columnSigned;
+ unsigned line = lineSigned, column = columnSigned - 1;
// find a scope that encloses the current location, starting from the lastVisibileSymbol
// and moving outwards
diff --git a/src/plugins/cpptools/cppcompletionassist.h b/src/plugins/cpptools/cppcompletionassist.h
index 8e0097b2fa..7bb7776940 100644
--- a/src/plugins/cpptools/cppcompletionassist.h
+++ b/src/plugins/cpptools/cppcompletionassist.h
@@ -113,7 +113,7 @@ private:
bool tryObjCCompletion();
bool objcKeywordsWanted() const;
int startCompletionInternal(const QString &fileName,
- unsigned line, unsigned column,
+ unsigned line, unsigned positionInBlock,
const QString &expression,
int endOfExpression);
diff --git a/src/plugins/cpptools/cppelementevaluator.cpp b/src/plugins/cpptools/cppelementevaluator.cpp
index 90fb21a34c..afd8944bde 100644
--- a/src/plugins/cpptools/cppelementevaluator.cpp
+++ b/src/plugins/cpptools/cppelementevaluator.cpp
@@ -373,7 +373,7 @@ void CppElementEvaluator::execute()
// Fetch the expression's code
ExpressionUnderCursor expressionUnderCursor(doc->languageFeatures());
const QString &expression = expressionUnderCursor(m_tc);
- Scope *scope = doc->scopeAt(line, column);
+ Scope *scope = doc->scopeAt(line, column - 1);
TypeOfExpression typeOfExpression;
typeOfExpression.init(doc, snapshot);
diff --git a/src/plugins/cpptools/cppfollowsymbolundercursor.cpp b/src/plugins/cpptools/cppfollowsymbolundercursor.cpp
index 65bfd310a5..a66c357986 100644
--- a/src/plugins/cpptools/cppfollowsymbolundercursor.cpp
+++ b/src/plugins/cpptools/cppfollowsymbolundercursor.cpp
@@ -491,12 +491,12 @@ void FollowSymbolUnderCursor::findLink(
{
Link link;
- int lineNumber = 0, positionInBlock = 0;
+ int line = 0;
+ int column = 0;
QTextCursor cursor = data.cursor();
QTextDocument *document = cursor.document();
- Utils::Text::convertPosition(document, cursor.position(), &lineNumber, &positionInBlock);
- const unsigned line = lineNumber;
- const unsigned column = positionInBlock + 1;
+ Utils::Text::convertPosition(document, cursor.position(), &line, &column);
+ const int positionInBlock = column - 1;
Snapshot snapshot = theSnapshot;
@@ -541,8 +541,8 @@ void FollowSymbolUnderCursor::findLink(
for (int i = 0; i < tokens.size(); ++i) {
const Token &tk = tokens.at(i);
- if (((unsigned) positionInBlock) >= tk.utf16charsBegin()
- && ((unsigned) positionInBlock) < tk.utf16charsEnd()) {
+ if (static_cast<unsigned>(positionInBlock) >= tk.utf16charsBegin()
+ && static_cast<unsigned>(positionInBlock) < tk.utf16charsEnd()) {
int closingParenthesisPos = tokens.size();
if (i >= 2 && tokens.at(i).is(T_IDENTIFIER) && tokens.at(i - 1).is(T_LPAREN)
&& (tokens.at(i - 2).is(T_SIGNAL) || tokens.at(i - 2).is(T_SLOT))) {
@@ -584,8 +584,8 @@ void FollowSymbolUnderCursor::findLink(
// In this case we want to look at one token before the current position to recognize
// an operator if the cursor is inside the actual operator: operator[$]
- if (unsigned(positionInBlock) >= tk.utf16charsBegin()
- && unsigned(positionInBlock) <= tk.utf16charsEnd()) {
+ if (static_cast<unsigned>(positionInBlock) >= tk.utf16charsBegin()
+ && static_cast<unsigned>(positionInBlock) <= tk.utf16charsEnd()) {
cursorRegionReached = true;
if (tk.is(T_OPERATOR)) {
link = attemptFuncDeclDef(cursor, theSnapshot,
@@ -675,7 +675,7 @@ void FollowSymbolUnderCursor::findLink(
}
// Find the last symbol up to the cursor position
- Scope *scope = doc->scopeAt(line, column);
+ Scope *scope = doc->scopeAt(line, positionInBlock);
if (!scope)
return processLinkCallback(link);
@@ -698,19 +698,21 @@ void FollowSymbolUnderCursor::findLink(
if (d->isDeclaration() || d->isFunction()) {
const QString fileName = QString::fromUtf8(d->fileName(), d->fileNameLength());
if (data.filePath().toString() == fileName) {
- if (unsigned(lineNumber) == d->line()
- && unsigned(positionInBlock) >= d->column()) { // TODO: check the end
+ if (static_cast<unsigned>(line) == d->line()
+ && static_cast<unsigned>(positionInBlock) >= d->column()) {
+ // TODO: check the end
result = r; // take the symbol under cursor.
break;
}
}
} else if (d->isUsingDeclaration()) {
- int tokenBeginLineNumber = 0, tokenBeginColumnNumber = 0;
+ int tokenBeginLineNumber = 0;
+ int tokenBeginColumnNumber = 0;
Utils::Text::convertPosition(document, beginOfToken, &tokenBeginLineNumber,
&tokenBeginColumnNumber);
- if (unsigned(tokenBeginLineNumber) > d->line()
- || (unsigned(tokenBeginLineNumber) == d->line()
- && unsigned(tokenBeginColumnNumber) > d->column())) {
+ if (static_cast<unsigned>(tokenBeginLineNumber) > d->line()
+ || (static_cast<unsigned>(tokenBeginLineNumber) == d->line()
+ && static_cast<unsigned>(tokenBeginColumnNumber) >= d->column())) {
result = r; // take the symbol under cursor.
break;
}
diff --git a/src/plugins/debugger/analyzer/analyzerutils.cpp b/src/plugins/debugger/analyzer/analyzerutils.cpp
index 96fb4ef9e5..2a30067562 100644
--- a/src/plugins/debugger/analyzer/analyzerutils.cpp
+++ b/src/plugins/debugger/analyzer/analyzerutils.cpp
@@ -74,7 +74,7 @@ CPlusPlus::Symbol *AnalyzerUtils::findSymbolUnderCursor()
CPlusPlus::ExpressionUnderCursor expressionUnderCursor(doc->languageFeatures());
moveCursorToEndOfName(&tc);
const QString &expression = expressionUnderCursor(tc);
- CPlusPlus::Scope *scope = doc->scopeAt(line, column);
+ CPlusPlus::Scope *scope = doc->scopeAt(line, column - 1);
CPlusPlus::TypeOfExpression typeOfExpression;
typeOfExpression.init(doc, snapshot);
diff --git a/src/plugins/designer/qtcreatorintegration.cpp b/src/plugins/designer/qtcreatorintegration.cpp
index 703fac1434..9d3f9919a0 100644
--- a/src/plugins/designer/qtcreatorintegration.cpp
+++ b/src/plugins/designer/qtcreatorintegration.cpp
@@ -329,7 +329,8 @@ static Document::Ptr addDefinition(const Snapshot &docTable,
const QString contents = editor->textDocument()->plainText();
int column;
editor->convertPosition(contents.length(), line, &column);
- editor->gotoLine(*line, column);
+ // gotoLine accepts 0-based column.
+ editor->gotoLine(*line, column - 1);
editor->insert(definition);
*line += 1;
}
diff --git a/src/plugins/qmakeprojectmanager/profileeditor.cpp b/src/plugins/qmakeprojectmanager/profileeditor.cpp
index fb854311a7..cb26142767 100644
--- a/src/plugins/qmakeprojectmanager/profileeditor.cpp
+++ b/src/plugins/qmakeprojectmanager/profileeditor.cpp
@@ -81,8 +81,10 @@ void ProFileEditorWidget::findLinkAt(const QTextCursor &cursor,
{
Link link;
- int lineNumber = 0, positionInBlock = 0;
- convertPosition(cursor.position(), &lineNumber, &positionInBlock);
+ int line = 0;
+ int column = 0;
+ convertPosition(cursor.position(), &line, &column);
+ const int positionInBlock = column - 1;
const QString block = cursor.block().text();
diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp
index 6e3a3e43ad..3af228874a 100644
--- a/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp
@@ -128,7 +128,8 @@ void QmakeManager::addLibraryImpl(const QString &fileName, BaseTextEditor *edito
// add extra \n in case the last line is not empty
int line, column;
editor->convertPosition(endOfDoc, &line, &column);
- if (!editor->textAt(endOfDoc - column, column).simplified().isEmpty())
+ const int positionInBlock = column - 1;
+ if (!editor->textAt(endOfDoc - positionInBlock, positionInBlock).simplified().isEmpty())
snippet = QLatin1Char('\n') + snippet;
editor->insert(snippet);
diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorwidget.cpp b/src/plugins/qmldesigner/components/texteditor/texteditorwidget.cpp
index 8bf98d79c9..240fe160d4 100644
--- a/src/plugins/qmldesigner/components/texteditor/texteditorwidget.cpp
+++ b/src/plugins/qmldesigner/components/texteditor/texteditorwidget.cpp
@@ -133,9 +133,10 @@ void TextEditorWidget::jumpTextCursorToSelectedModelNode()
const int nodeOffset = rewriterView->nodeOffset(selectedNode);
if (nodeOffset > 0) {
- int line, column;
- m_textEditor->editorWidget()->convertPosition(nodeOffset, &line, &column);
- m_textEditor->editorWidget()->gotoLine(line, column);
+ int line, column;
+ m_textEditor->editorWidget()->convertPosition(nodeOffset, &line, &column);
+ // line has to be 1 based, column 0 based!
+ m_textEditor->editorWidget()->gotoLine(line, column - 1);
}
}
m_updateSelectionTimer.stop();
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp
index 877010a3b7..9ab39cce37 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.cpp
+++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp
@@ -374,7 +374,8 @@ void QmlDesignerPlugin::jumpTextCursorToSelectedModelNode()
if (currentSelectedNode != selectedNode) {
int line, column;
currentDesignDocument()->textEditor()->convertPosition(nodeOffset, &line, &column);
- currentDesignDocument()->textEditor()->gotoLine(line, column);
+ // line has to be 1 based, column 0 based!
+ currentDesignDocument()->textEditor()->gotoLine(line, column - 1);
}
}
}
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index 3141a12620..37a57412bf 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -3104,14 +3104,14 @@ bool TextEditorWidget::restoreState(const QByteArray &state)
int version;
int vval;
int hval;
- int lval;
- int cval;
+ int lineVal;
+ int columnVal;
QDataStream stream(state);
stream >> version;
stream >> vval;
stream >> hval;
- stream >> lval;
- stream >> cval;
+ stream >> lineVal;
+ stream >> columnVal;
if (version >= 1) {
QList<int> collapsedBlocks;
@@ -3137,7 +3137,8 @@ bool TextEditorWidget::restoreState(const QByteArray &state)
}
d->m_lastCursorChangeWasInteresting = false; // avoid adding last position to history
- gotoLine(lval, cval);
+ // line is 1-based, column is 0-based
+ gotoLine(lineVal, columnVal - 1);
verticalScrollBar()->setValue(vval);
horizontalScrollBar()->setValue(hval);
d->saveCurrentCursorPositionForNavigation();