Forráskód Böngészése

GTextEditor: Replace selection on input or Backspace/Delete.

Andreas Kling 6 éve
szülő
commit
220c7b5f75
1 módosított fájl, 10 hozzáadás és 2 törlés
  1. 10 2
      LibGUI/GTextEditor.cpp

+ 10 - 2
LibGUI/GTextEditor.cpp

@@ -296,6 +296,10 @@ void GTextEditor::keydown_event(GKeyEvent& event)
     }
 
     if (!event.modifiers() && event.key() == KeyCode::Key_Backspace) {
+        if (has_selection()) {
+            delete_selection();
+            return;
+        }
         if (m_cursor.column() > 0) {
             // Backspace within line
             current_line().remove(m_cursor.column() - 1);
@@ -318,6 +322,10 @@ void GTextEditor::keydown_event(GKeyEvent& event)
     }
 
     if (!event.modifiers() && event.key() == KeyCode::Key_Delete) {
+        if (has_selection()) {
+            delete_selection();
+            return;
+        }
         if (m_cursor.column() < current_line().length()) {
             // Delete within line
             current_line().remove(m_cursor.column());
@@ -339,8 +347,8 @@ void GTextEditor::keydown_event(GKeyEvent& event)
         return;
     }
 
-    if (!event.text().is_empty())
-        insert_at_cursor(event.text()[0]);
+    if (!event.ctrl() && !event.alt() && !event.text().is_empty())
+        insert_at_cursor_or_replace_selection(event.text());
 
     return GWidget::keydown_event(event);
 }