summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Helleu <flashcode@flashtux.org>2023-02-27 22:22:01 +0100
committerSébastien Helleu <flashcode@flashtux.org>2023-03-16 20:42:19 +0100
commitc82df8f22e02d6c9e86705537fc525dc252a4554 (patch)
tree04b74359dc90890f0eea9760ee29c85e4142f530
parentc647d540a702890e8b182b1640fdfa1bd94ced82 (diff)
downloadweechat-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.c17
-rw-r--r--tests/unit/gui/test-gui-key.cpp8
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, "@"));