From f449bc6f91a1e44237bc1ea9075b61862ed50405 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Tue, 27 Jan 2009 13:23:02 +0100 Subject: [PATCH] Fixes: fakevim: fix cursor positioning after search --- src/plugins/fakevim/fakevimhandler.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index b63ebd90627..65333413d20 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -1582,10 +1582,14 @@ void FakeVimHandler::Private::search(const QString &needle0, bool forward) if (forward) m_tc.movePosition(Right, MoveAnchor, 1); + int oldLine = cursorLineInDocument() - cursorLineOnScreen(); + EDITOR(setTextCursor(m_tc)); if (EDITOR(find(needle, flags))) { m_tc = EDITOR(textCursor()); m_tc.setPosition(m_tc.anchor()); + if (oldLine != cursorLineInDocument() - cursorLineOnScreen()) + scrollToLineInDocument(cursorLineInDocument() - linesOnScreen() / 2); return; } @@ -1594,6 +1598,8 @@ void FakeVimHandler::Private::search(const QString &needle0, bool forward) if (EDITOR(find(needle, flags))) { m_tc = EDITOR(textCursor()); m_tc.setPosition(m_tc.anchor()); + if (oldLine != cursorLineInDocument() - cursorLineOnScreen()) + scrollToLineInDocument(cursorLineInDocument() - linesOnScreen() / 2); if (forward) showRedMessage("search hit BOTTOM, continuing at TOP"); else -- GitLab