From b11d3606c274c46783917b51fc9f7f979f52a1f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com>
Date: Thu, 2 Jul 2009 12:21:00 +0200
Subject: [PATCH] Fixed behaviour of Home and End while renaming

Also allow starting to rename with the cursor at the end of the name.
---
 src/plugins/cppeditor/cppeditor.cpp | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 5295a013507..4be02ac067a 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -805,7 +805,7 @@ void CPPEditor::renameInPlace()
     for (int i = 0; i < m_renameSelections.size(); ++i) {
         QTextEdit::ExtraSelection s = m_renameSelections.at(i);
         if (c.position() >= s.cursor.anchor()
-                && c.position() < s.cursor.position()) {
+                && c.position() <= s.cursor.position()) {
             m_currentRenameSelection = i;
             m_renameSelections[i].format.setBackground(QColor(255, 200, 200));
             setExtraSelections(CodeSemanticsSelection, m_renameSelections);
@@ -1471,17 +1471,25 @@ void CPPEditor::keyPressEvent(QKeyEvent *e)
         return;
     case Qt::Key_Home: {
         QTextCursor c = textCursor();
-        c.setPosition(currentRenameSelection.cursor.anchor(), moveMode);
-        setTextCursor(c);
-        e->accept();
-        return;
+        if (c.position() > currentRenameSelection.cursor.anchor()
+               && c.position() <= currentRenameSelection.cursor.position()) {
+            c.setPosition(currentRenameSelection.cursor.anchor(), moveMode);
+            setTextCursor(c);
+            e->accept();
+            return;
+        }
+        break;
     }
     case Qt::Key_End: {
         QTextCursor c = textCursor();
-        c.setPosition(currentRenameSelection.cursor.position(), moveMode);
-        setTextCursor(c);
-        e->accept();
-        return;
+        if (c.position() >= currentRenameSelection.cursor.anchor()
+               && c.position() < currentRenameSelection.cursor.position()) {
+            c.setPosition(currentRenameSelection.cursor.position(), moveMode);
+            setTextCursor(c);
+            e->accept();
+            return;
+        }
+        break;
     }
     case Qt::Key_Backspace: {
         QTextCursor c = textCursor();
-- 
GitLab