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