Ver código fonte

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 4 anos atrás
pai
commit
c84756efa8
1 arquivos alterados com 4 adições e 3 exclusões
  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())
         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());
         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
                 m_editing_delegate->set_value(event.text());
         }