From 5689826800f093f3c935bf75faa94683d344529a Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Thu, 25 Dec 2008 13:20:09 +0100
Subject: [PATCH] get search right for qplaintextedit

---
 src/plugins/fakevim/handler.cpp | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/plugins/fakevim/handler.cpp b/src/plugins/fakevim/handler.cpp
index 8c213c34c8e..78db71edc70 100644
--- a/src/plugins/fakevim/handler.cpp
+++ b/src/plugins/fakevim/handler.cpp
@@ -254,8 +254,8 @@ void FakeVimHandler::Private::handleCommandMode(int key, const QString &text)
         finishMovement();
     } else if (m_submode == ZSubMode) {
         if (key == Key_Return) {
-    	    // cursor line to top of window, cursor on first non-blank
-    	    QRect rect = m_editor->cursorRect();
+            // cursor line to top of window, cursor on first non-blank
+            QRect rect = m_editor->cursorRect();
             int blocksUp = rect.y() / rect.height();
             int blockNumber = m_tc.block().blockNumber();
             QScrollBar *scrollBar = m_editor->verticalScrollBar();
@@ -265,7 +265,7 @@ void FakeVimHandler::Private::handleCommandMode(int key, const QString &text)
             }
             moveToFirstNonBlankOnLine();
             finishMovement();
-    	} else {
+        } else {
             qDebug() << "Ignored z + " << key << text;
         }
         m_submode = NoSubMode;
@@ -454,16 +454,18 @@ void FakeVimHandler::Private::handleExMode(int key, const QString &text)
 void FakeVimHandler::Private::search(const QString &needle, bool backwards)
 {
     //qDebug() << "NEEDLE " << needle << "BACKWARDS" << backwards;
-    //int startPos = m_tc.position();
+    QTextCursor orig = m_tc;
     QTextDocument::FindFlags flags;
     if (backwards)
         flags = QTextDocument::FindBackward;
 
-    m_tc.movePosition(backwards? Left : Right, MoveAnchor, 1);
+    if (!backwards)
+        m_tc.movePosition(Right, MoveAnchor, 1);
+
     m_editor->setTextCursor(m_tc);
     if (m_editor->find(needle, flags)) {
         m_tc = m_editor->textCursor();
-        m_tc.movePosition(Left, MoveAnchor, needle.size());
+        m_tc.movePosition(Left, MoveAnchor, needle.size() - 1);
         return;
     }
 
@@ -476,7 +478,7 @@ void FakeVimHandler::Private::search(const QString &needle, bool backwards)
     m_editor->setTextCursor(m_tc);
     if (m_editor->find(needle, flags)) {
         m_tc = m_editor->textCursor();
-        m_tc.movePosition(Left, MoveAnchor, needle.size());
+        m_tc.movePosition(Left, MoveAnchor, needle.size() - 1);
         if (backwards)
             showMessage("search hit TOP, continuing at BOTTOM");
         else
@@ -484,7 +486,7 @@ void FakeVimHandler::Private::search(const QString &needle, bool backwards)
         return;
     }
 
-    m_tc.movePosition(backwards ? Right : Left, MoveAnchor, 1);
+    m_tc = orig;
 }
 
 void FakeVimHandler::Private::moveToFirstNonBlankOnLine()
-- 
GitLab