From b7c27886c0dcced786fcf3b34abdae6a75ffed70 Mon Sep 17 00:00:00 2001 From: Kevin Schluensen Date: Wed, 18 Jan 2023 12:57:13 +0100 Subject: [PATCH 1/2] chore(linux): log failures to `km_kbp_context_clear(context)` Fixes #7540 --- linux/ibus-keyman/src/engine.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/linux/ibus-keyman/src/engine.c b/linux/ibus-keyman/src/engine.c index 2530ff656a..442df1e51c 100644 --- a/linux/ibus-keyman/src/engine.c +++ b/linux/ibus-keyman/src/engine.c @@ -277,12 +277,16 @@ reset_context(IBusEngine *engine) { if (km_kbp_context_items_from_utf8(surrounding_text, &context_items) == KM_KBP_STATUS_OK) { km_kbp_context_set(context, context_items); km_kbp_context_items_dispose(context_items); + } else { + km_kbp_context_clear(context); + g_message("%s: setting context failed", __FUNCTION__); } } g_free(surrounding_text); g_free(current_context_utf8); } else { km_kbp_context_clear(context); + g_message("%s: client does not support surrounding text", __FUNCTION__); } } From 28baf301355507368ee8aeb5fb8a5d0c957e2721 Mon Sep 17 00:00:00 2001 From: Kevin Schluensen Date: Wed, 18 Jan 2023 18:27:37 +0100 Subject: [PATCH 2/2] Add status output --- linux/ibus-keyman/src/engine.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/linux/ibus-keyman/src/engine.c b/linux/ibus-keyman/src/engine.c index 442df1e51c..a98df7c07d 100644 --- a/linux/ibus-keyman/src/engine.c +++ b/linux/ibus-keyman/src/engine.c @@ -274,12 +274,13 @@ reset_context(IBusEngine *engine) { current_context_utf8 = get_current_context_text(context); if (!g_str_has_suffix(surrounding_text, current_context_utf8) || !g_utf8_strlen(current_context_utf8, -1)) { g_message("%s: setting context because it has changed from expected", __FUNCTION__); - if (km_kbp_context_items_from_utf8(surrounding_text, &context_items) == KM_KBP_STATUS_OK) { + enum km_kbp_status_codes status = km_kbp_context_items_from_utf8(surrounding_text, &context_items); + if (status == KM_KBP_STATUS_OK) { km_kbp_context_set(context, context_items); km_kbp_context_items_dispose(context_items); } else { km_kbp_context_clear(context); - g_message("%s: setting context failed", __FUNCTION__); + g_message("%s: setting context failed with status code %d", __FUNCTION__, status); } } g_free(surrounding_text);