Parcourir la source

LibGUI: Don't start editing with (just) modifier keys when AnyKeyPressed

This fixes the control key starting an edit on (and inserting a nul
character into) a cell in Spreadsheet.
AnotherTest il y a 4 ans
Parent
commit
c84756efa8
1 fichiers modifiés avec 4 ajouts et 3 suppressions
  1. 4 3
      Libraries/LibGUI/TableView.cpp

+ 4 - 3
Libraries/LibGUI/TableView.cpp

@@ -177,11 +177,12 @@ void TableView::keydown_event(KeyEvent& event)
     if (event.is_accepted())
     if (event.is_accepted())
         return;
         return;
 
 
-    if (is_editable() && edit_triggers() & EditTrigger::AnyKeyPressed && !event.text().is_empty()) {
+    auto is_delete = event.key() == Key_Delete || event.key() == Key_Backspace;
+    if (is_editable() && edit_triggers() & EditTrigger::AnyKeyPressed && (event.code_point() != 0 || is_delete)) {
         begin_editing(cursor_index());
         begin_editing(cursor_index());
         if (m_editing_delegate) {
         if (m_editing_delegate) {
-            if (event.key() == KeyCode::Key_Delete || event.key() == KeyCode::Key_Backspace)
-                m_editing_delegate->set_value(String::empty());
+            if (is_delete)
+                m_editing_delegate->set_value(event.key() == Key_Delete ? String {} : String::empty());
             else
             else
                 m_editing_delegate->set_value(event.text());
                 m_editing_delegate->set_value(event.text());
         }
         }