diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 0074c8f5588d65ce893d1afba8ba031c3506ce30..37772f4b8cae5b4a89fdfdbb5655423a31d5f42b 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;
         }