diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2023-02-27 22:22:01 +0100 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2023-03-16 20:42:19 +0100 |
commit | c82df8f22e02d6c9e86705537fc525dc252a4554 (patch) | |
tree | 04b74359dc90890f0eea9760ee29c85e4142f530 | |
parent | c647d540a702890e8b182b1640fdfa1bd94ced82 (diff) | |
download | weechat-c82df8f22e02d6c9e86705537fc525dc252a4554.zip |
core: fix safe list of keys
Add missing safe keys: "backspace" and "return".
Add missing unsafe keys: "comma", "space".
-rw-r--r-- | src/gui/gui-key.c | 17 | ||||
-rw-r--r-- | tests/unit/gui/test-gui-key.cpp | 8 |
2 files changed, 23 insertions, 2 deletions
diff --git a/src/gui/gui-key.c b/src/gui/gui-key.c index 60af69e08..d5e916ab9 100644 --- a/src/gui/gui-key.c +++ b/src/gui/gui-key.c @@ -70,11 +70,14 @@ char *gui_key_context_string[GUI_KEY_NUM_CONTEXTS] = char *gui_key_focus_string[GUI_KEY_NUM_FOCUS] = { "*", "chat", "bar", "item" }; +char *gui_key_unsafe_list[] = +{ "comma", "space", NULL }; + char *gui_key_safe_list[] = { "ctrl-", "meta-", "meta2-", "shift-", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", "f16", - "f17", "f18", "f19", "f20", "home", "insert", "delete", "end", "pgup", - "pgdn", "up", "down", "right", "left", "tab", NULL }; + "f17", "f18", "f19", "f20", "home", "insert", "delete", "end", "backspace", + "pgup", "pgdn", "up", "down", "right", "left", "tab", "return", NULL }; int gui_key_debug = 0; /* 1 for key debug: display raw codes, */ /* do not execute associated actions */ @@ -1124,6 +1127,16 @@ gui_key_is_safe (int context, const char *key) return 1; } + for (i = 0; gui_key_unsafe_list[i]; i++) + { + if (strncmp (key, gui_key_unsafe_list[i], + strlen (gui_key_unsafe_list[i])) == 0) + { + /* key is not safe */ + return 0; + } + } + for (i = 0; gui_key_safe_list[i]; i++) { if (strncmp (key, gui_key_safe_list[i], diff --git a/tests/unit/gui/test-gui-key.cpp b/tests/unit/gui/test-gui-key.cpp index b99799cd1..1cb6323c5 100644 --- a/tests/unit/gui/test-gui-key.cpp +++ b/tests/unit/gui/test-gui-key.cpp @@ -911,6 +911,10 @@ TEST(GuiKey, IsSafe) LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "meta2")); LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "shift")); + /* NOT safe: comma / space */ + LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "comma")); + LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "space")); + /* NOT safe: starts with capital letter (keys are case sensitive) */ LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Ctrl-a")); LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Meta-a")); @@ -921,6 +925,7 @@ TEST(GuiKey, IsSafe) LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Insert")); LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Delete")); LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "End")); + LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Backspace")); LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Pgup")); LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Pgdn")); LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Up")); @@ -928,6 +933,7 @@ TEST(GuiKey, IsSafe) LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Right")); LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Left")); LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Tab")); + LONGS_EQUAL(0, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "Return")); /* safe keys */ LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "ctrl-a")); @@ -959,6 +965,7 @@ TEST(GuiKey, IsSafe) LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "insert")); LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "delete")); LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "end")); + LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "backspace")); LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "pgup")); LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "pgdn")); LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "up")); @@ -966,6 +973,7 @@ TEST(GuiKey, IsSafe) LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "right")); LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "left")); LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "tab")); + LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_DEFAULT, "return")); /* safe keys: "@" in cursor/mouse context */ LONGS_EQUAL(1, gui_key_is_safe (GUI_KEY_CONTEXT_CURSOR, "@")); |