From 2ab90078f4344b73cce6ca0ad69a0b1d1757e30a Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Thu, 28 Jan 2010 14:46:00 +0100
Subject: [PATCH] Center cursor when going from Design mode to text mode

Just use high level TextEditor::gotoLine instead of directly manipulating
the QTextCursor.

Task-number: BAUHAUS-326
---
 src/plugins/qmldesigner/designmodewidget.cpp | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp
index 30a2011c982..986a8b868f7 100644
--- a/src/plugins/qmldesigner/designmodewidget.cpp
+++ b/src/plugins/qmldesigner/designmodewidget.cpp
@@ -311,14 +311,15 @@ void DocumentWidget::setAutoSynchronization(bool sync)
                 selectedNode = rewriter->selectedModelNodes().first();
 
             if (selectedNode.isValid()) {
-                int nodeOffset = rewriter->nodeOffset(selectedNode);
-                QTextCursor editTextCursor = m_textBuffer->textCursor();
-                if (nodeOffset > 0
-                    && nodeForPosition(editTextCursor.position()) != selectedNode) {
-                    if (debug)
-                        qDebug() << "Moving text cursor to " << nodeOffset;
-                    editTextCursor.setPosition(nodeOffset);
-                    m_textBuffer->setTextCursor(editTextCursor);
+                const int nodeOffset = rewriter->nodeOffset(selectedNode);
+                if (nodeOffset > 0) {
+                    const ModelNode currentSelectedNode
+                            = nodeForPosition(m_textBuffer->textCursor().position());
+                    if (currentSelectedNode != selectedNode) {
+                        int line, column;
+                        textEditor()->convertPosition(nodeOffset, &line, &column);
+                        textEditor()->gotoLine(line, column);
+                    }
                 }
             }
         }
-- 
GitLab