From 361e29cfc9320e2873d5ec12cd34caec79d6afee Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Wed, 27 Sep 2023 09:42:18 +0100 Subject: [PATCH] LibGUI: Don't enter TableView edit mode when a control key is pressed A key press, which is an ASCII control character will no longer cause TableView to begin editing. This fixes an issue in Spreadsheet where navigating to a cell then pressing escape would cause a that cell's text to be set to a non-printable value. Pressing escape after navigating to a cell now has no effect. --- Userland/Libraries/LibGUI/TableView.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibGUI/TableView.cpp b/Userland/Libraries/LibGUI/TableView.cpp index 0d866a5d95..050517ceec 100644 --- a/Userland/Libraries/LibGUI/TableView.cpp +++ b/Userland/Libraries/LibGUI/TableView.cpp @@ -194,8 +194,8 @@ void TableView::keydown_event(KeyEvent& event) auto is_delete = event.key() == Key_Delete; auto is_backspace = event.key() == Key_Backspace; auto is_clear = is_delete || is_backspace; - auto has_ctrl = event.modifiers() & KeyModifier::Mod_Ctrl; - if (is_editable() && edit_triggers() & EditTrigger::AnyKeyPressed && (event.code_point() != 0 || is_clear) && !has_ctrl) { + auto is_control_character = is_ascii_c0_control(event.code_point()); + if (is_editable() && edit_triggers() & EditTrigger::AnyKeyPressed && !event.ctrl() && (!is_control_character || is_clear)) { begin_editing(cursor_index()); if (m_editing_delegate) { if (is_delete) {