From aa5899ad40ba47c03861c193aab3ccfe33e3b3b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com>
Date: Thu, 25 Mar 2010 16:44:41 +0100
Subject: [PATCH] Fixed Delete and Backspace in specific cases when renaming
 in-place

The Delete and Backspace keys are blocked when the cursor is
respectively at the end or beginning of a word that is being renamed
in-place. However, when there is a selection, the removal of this
selection is still supposed to be allowed.

Reviewed-by: Robert Loehning
---
 src/plugins/cppeditor/cppeditor.cpp | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 0074c8f5588..37772f4b8ca 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -1795,16 +1795,18 @@ void CPPEditor::keyPressEvent(QKeyEvent *e)
         break;
     }
     case Qt::Key_Backspace: {
-        if (cursor.position() == m_currentRenameSelectionBegin.position()) {
-            // Eat backspace at start of name
+        if (cursor.position() == m_currentRenameSelectionBegin.position()
+            && !cursor.hasSelection()) {
+            // Eat backspace at start of name when there is no selection
             e->accept();
             return;
         }
         break;
     }
     case Qt::Key_Delete: {
-        if (cursor.position() == m_currentRenameSelectionEnd.position()) {
-            // Eat delete at end of name
+        if (cursor.position() == m_currentRenameSelectionEnd.position()
+            && !cursor.hasSelection()) {
+            // Eat delete at end of name when there is no selection
             e->accept();
             return;
         }
-- 
GitLab