From 8e40ca1470d1c64e2a81df6db581a0d1b326a0aa Mon Sep 17 00:00:00 2001 From: John Hernandez <129467592+H3rnand3zzz@users.noreply.github.com> Date: Fri, 3 Nov 2023 09:21:00 +0100 Subject: [PATCH] Add unicode support for correction char Commit to allow unicode support in omemo/pgp/otr chars misses adding support to set correction character. 1f8b1eb740391941e79e1004ad041f8178a2b674 Further fixing commit also misses adding support to set the unicode character, it only adds ability to display unicode correction character in the settings. 5cf6ee15cf6ee1bc6d0b99b01891bc455a657bf022a72b0 --- src/command/cmd_funcs.c | 10 +++------- src/config/preferences.c | 12 ++++++------ src/config/preferences.h | 2 +- src/config/theme.c | 4 ++-- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index 1871f3a7..36b02f5c 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -9329,7 +9329,6 @@ cmd_os(ProfWin* window, const char* const command, gchar** args) gboolean cmd_correction(ProfWin* window, const char* const command, gchar** args) { - // enable/disable if (g_strcmp0(args[0], "on") == 0) { _cmd_set_boolean_preference(args[0], "Last Message Correction", PREF_CORRECTION_ALLOW); caps_add_feature(XMPP_FEATURE_LAST_MESSAGE_CORRECTION); @@ -9340,15 +9339,12 @@ cmd_correction(ProfWin* window, const char* const command, gchar** args) return TRUE; } - // char if (g_strcmp0(args[0], "char") == 0) { - if (args[1] == NULL) { - cons_bad_cmd_usage(command); - } else if (strlen(args[1]) != 1) { + if (args[1] == NULL || g_utf8_strlen(args[1], 4) != 1) { cons_bad_cmd_usage(command); } else { - prefs_set_correction_char(args[1][0]); - cons_show("LMC char set to %c.", args[1][0]); + prefs_set_correction_char(args[1]); + cons_show("LMC char set to %s.", args[1]); } } diff --git a/src/config/preferences.c b/src/config/preferences.c index 77e64b8f..a80e5321 100644 --- a/src/config/preferences.c +++ b/src/config/preferences.c @@ -1281,13 +1281,13 @@ prefs_get_correction_char(void) } void -prefs_set_correction_char(char ch) +prefs_set_correction_char(char* ch) { - char str[2]; - str[0] = ch; - str[1] = '\0'; - - g_key_file_set_string(prefs, PREF_GROUP_UI, "correction.char", str); + if (g_utf8_strlen(ch, 4) == 1) { + g_key_file_set_string(prefs, PREF_GROUP_UI, "correction.char", ch); + } else { + log_error("Could not set correction char: %s", ch); + } } gboolean diff --git a/src/config/preferences.h b/src/config/preferences.h index 9833d1f3..a8fb3f46 100644 --- a/src/config/preferences.h +++ b/src/config/preferences.h @@ -296,7 +296,7 @@ gint prefs_get_occupants_indent(void); void prefs_set_occupants_indent(gint value); gchar* prefs_get_correction_char(void); -void prefs_set_correction_char(char ch); +void prefs_set_correction_char(char* ch); void prefs_add_login(const char* jid); diff --git a/src/config/theme.c b/src/config/theme.c index 6a9a7fc9..5fc393ed 100644 --- a/src/config/theme.c +++ b/src/config/theme.c @@ -484,8 +484,8 @@ _load_preferences(void) if (g_key_file_has_key(theme, "ui", "correction.char", NULL)) { auto_gchar gchar* ch = g_key_file_get_string(theme, "ui", "correction.char", NULL); - if (ch && strlen(ch) > 0) { - prefs_set_correction_char(ch[0]); + if (ch && g_utf8_strlen(ch, 4) == 1) { + prefs_set_correction_char(ch); } }