Refactor surrounding text warning
This commit is contained in:
parent
ab005a1bb0
commit
f064aefc08
171
ibus-HEAD.patch
171
ibus-HEAD.patch
@ -7759,3 +7759,174 @@ index 0c0bda10..340168c8 100644
|
|||||||
--
|
--
|
||||||
2.38.1
|
2.38.1
|
||||||
|
|
||||||
|
From b6664195a2bc9c7666f18b5586c538fb671bf1a9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: fujiwarat <takao.fujiwara1@gmail.com>
|
||||||
|
Date: Tue, 11 Oct 2022 20:12:35 +0900
|
||||||
|
Subject: [PATCH] client/gtk2: Refactor surrounding text warning
|
||||||
|
|
||||||
|
It would be better to check the function return value at the
|
||||||
|
first calling than the static variable.
|
||||||
|
|
||||||
|
Fixes: https://github.com/ibus/ibus/commit/39b6907
|
||||||
|
Fixes: https://github.com/ibus/ibus/commit/7bbcce6
|
||||||
|
---
|
||||||
|
client/gtk2/ibusimcontext.c | 72 +++++++++++++++++++------------------
|
||||||
|
1 file changed, 38 insertions(+), 34 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
|
||||||
|
index 6e338157..e4c4ff36 100644
|
||||||
|
--- a/client/gtk2/ibusimcontext.c
|
||||||
|
+++ b/client/gtk2/ibusimcontext.c
|
||||||
|
@@ -70,7 +70,6 @@ struct _IBusIMContext {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
IBusInputContext *ibuscontext;
|
||||||
|
- IBusInputContext *ibuscontext_needs_surrounding;
|
||||||
|
|
||||||
|
/* preedit status */
|
||||||
|
gchar *preedit_string;
|
||||||
|
@@ -214,7 +213,7 @@ static gboolean _slave_delete_surrounding_cb
|
||||||
|
gint offset_from_cursor,
|
||||||
|
guint nchars,
|
||||||
|
IBusIMContext *context);
|
||||||
|
-static void _request_surrounding_text (IBusIMContext *context);
|
||||||
|
+static gboolean _request_surrounding_text (IBusIMContext *context);
|
||||||
|
static void _create_fake_input_context (void);
|
||||||
|
static gboolean _set_content_type (IBusIMContext *context);
|
||||||
|
|
||||||
|
@@ -565,34 +564,19 @@ _process_key_event (IBusInputContext *context,
|
||||||
|
* context->caps has IBUS_CAP_SURROUNDING_TEXT and the current IBus
|
||||||
|
* engine needs surrounding-text.
|
||||||
|
*/
|
||||||
|
-static void
|
||||||
|
+static gboolean
|
||||||
|
_request_surrounding_text (IBusIMContext *context)
|
||||||
|
{
|
||||||
|
- static gboolean warned = FALSE;
|
||||||
|
+ gboolean return_value = TRUE;
|
||||||
|
if (context &&
|
||||||
|
(context->caps & IBUS_CAP_SURROUNDING_TEXT) != 0 &&
|
||||||
|
context->ibuscontext != NULL &&
|
||||||
|
ibus_input_context_needs_surrounding_text (context->ibuscontext)) {
|
||||||
|
- gboolean return_value;
|
||||||
|
IDEBUG ("requesting surrounding text");
|
||||||
|
g_signal_emit (context, _signal_retrieve_surrounding_id, 0,
|
||||||
|
&return_value);
|
||||||
|
- if (!return_value) {
|
||||||
|
- /* Engines can disable the surrounding text feature with
|
||||||
|
- * the updated capabilities.
|
||||||
|
- */
|
||||||
|
- if (context->caps & IBUS_CAP_SURROUNDING_TEXT) {
|
||||||
|
- context->caps &= ~IBUS_CAP_SURROUNDING_TEXT;
|
||||||
|
- ibus_input_context_set_capabilities (context->ibuscontext,
|
||||||
|
- context->caps);
|
||||||
|
- }
|
||||||
|
- if (!warned) {
|
||||||
|
- g_warning ("%s has no capability of surrounding-text feature",
|
||||||
|
- g_get_prgname ());
|
||||||
|
- warned = TRUE;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
+ return return_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
@@ -986,7 +970,6 @@ ibus_im_context_init (GObject *obj)
|
||||||
|
ibusimcontext->cursor_area.height = 0;
|
||||||
|
|
||||||
|
ibusimcontext->ibuscontext = NULL;
|
||||||
|
- ibusimcontext->ibuscontext_needs_surrounding = NULL;
|
||||||
|
ibusimcontext->has_focus = FALSE;
|
||||||
|
ibusimcontext->time = GDK_CURRENT_TIME;
|
||||||
|
#ifdef ENABLE_SURROUNDING
|
||||||
|
@@ -2185,16 +2168,33 @@ _ibus_context_hide_preedit_text_cb (IBusInputContext *ibuscontext,
|
||||||
|
g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+_ibus_warn_no_support_surrounding_text (IBusIMContext *context)
|
||||||
|
+{
|
||||||
|
+ /* Engines can disable the surrounding text feature with
|
||||||
|
+ * the updated capabilities.
|
||||||
|
+ */
|
||||||
|
+ if (context->caps & IBUS_CAP_SURROUNDING_TEXT) {
|
||||||
|
+ context->caps &= ~IBUS_CAP_SURROUNDING_TEXT;
|
||||||
|
+ ibus_input_context_set_capabilities (context->ibuscontext,
|
||||||
|
+ context->caps);
|
||||||
|
+ }
|
||||||
|
+ g_warning ("%s has no capability of surrounding-text feature",
|
||||||
|
+ g_get_prgname ());
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
_ibus_context_require_surrounding_text_cb (IBusInputContext *ibuscontext,
|
||||||
|
IBusIMContext *ibusimcontext)
|
||||||
|
{
|
||||||
|
IDEBUG ("%s", __FUNCTION__);
|
||||||
|
g_assert (ibusimcontext->ibuscontext == ibuscontext);
|
||||||
|
- if (ibusimcontext->ibuscontext_needs_surrounding == ibuscontext) {
|
||||||
|
- _request_surrounding_text (ibusimcontext);
|
||||||
|
- ibusimcontext->ibuscontext_needs_surrounding = NULL;
|
||||||
|
- }
|
||||||
|
+ if (!_request_surrounding_text (ibusimcontext))
|
||||||
|
+ _ibus_warn_no_support_surrounding_text (ibusimcontext);
|
||||||
|
+ g_signal_handlers_disconnect_by_func (
|
||||||
|
+ ibusimcontext->ibuscontext,
|
||||||
|
+ G_CALLBACK (_ibus_context_require_surrounding_text_cb),
|
||||||
|
+ ibusimcontext);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -2236,6 +2236,7 @@ _create_input_context_done (IBusBus *bus,
|
||||||
|
g_error_free (error);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
+ gboolean requested_surrounding_text = FALSE;
|
||||||
|
ibus_input_context_set_client_commit_preedit (context, TRUE);
|
||||||
|
ibusimcontext->ibuscontext = context;
|
||||||
|
|
||||||
|
@@ -2263,16 +2264,12 @@ _create_input_context_done (IBusBus *bus,
|
||||||
|
"hide-preedit-text",
|
||||||
|
G_CALLBACK (_ibus_context_hide_preedit_text_cb),
|
||||||
|
ibusimcontext);
|
||||||
|
- g_signal_connect (
|
||||||
|
- ibusimcontext->ibuscontext,
|
||||||
|
- "require-surrounding-text",
|
||||||
|
- G_CALLBACK (_ibus_context_require_surrounding_text_cb),
|
||||||
|
- ibusimcontext);
|
||||||
|
g_signal_connect (ibusimcontext->ibuscontext, "destroy",
|
||||||
|
G_CALLBACK (_ibus_context_destroy_cb),
|
||||||
|
ibusimcontext);
|
||||||
|
|
||||||
|
- ibus_input_context_set_capabilities (ibusimcontext->ibuscontext, ibusimcontext->caps);
|
||||||
|
+ ibus_input_context_set_capabilities (ibusimcontext->ibuscontext,
|
||||||
|
+ ibusimcontext->caps);
|
||||||
|
|
||||||
|
if (ibusimcontext->has_focus) {
|
||||||
|
/* The time order is _create_input_context() ->
|
||||||
|
@@ -2286,11 +2283,18 @@ _create_input_context_done (IBusBus *bus,
|
||||||
|
_set_cursor_location_internal (ibusimcontext);
|
||||||
|
if (ibus_input_context_needs_surrounding_text (
|
||||||
|
ibusimcontext->ibuscontext)) {
|
||||||
|
- _request_surrounding_text (ibusimcontext);
|
||||||
|
- } else {
|
||||||
|
- ibusimcontext->ibuscontext_needs_surrounding = ibusimcontext->ibuscontext;
|
||||||
|
+ if (!_request_surrounding_text (ibusimcontext))
|
||||||
|
+ _ibus_warn_no_support_surrounding_text (ibusimcontext);
|
||||||
|
+ requested_surrounding_text = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ if (!requested_surrounding_text) {
|
||||||
|
+ g_signal_connect (
|
||||||
|
+ ibusimcontext->ibuscontext,
|
||||||
|
+ "require-surrounding-text",
|
||||||
|
+ G_CALLBACK (_ibus_context_require_surrounding_text_cb),
|
||||||
|
+ ibusimcontext);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (!g_queue_is_empty (ibusimcontext->events_queue)) {
|
||||||
|
#if GTK_CHECK_VERSION (3, 98, 4)
|
||||||
|
--
|
||||||
|
2.37.3
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
Name: ibus
|
Name: ibus
|
||||||
Version: 1.5.27
|
Version: 1.5.27
|
||||||
Release: 10%{?dist}
|
Release: 11%{?dist}
|
||||||
Summary: Intelligent Input Bus for Linux OS
|
Summary: Intelligent Input Bus for Linux OS
|
||||||
License: LGPL-2.0-or-later
|
License: LGPL-2.0-or-later
|
||||||
URL: https://github.com/ibus/%name/wiki
|
URL: https://github.com/ibus/%name/wiki
|
||||||
@ -554,6 +554,9 @@ dconf update || :
|
|||||||
%{_datadir}/installed-tests/ibus
|
%{_datadir}/installed-tests/ibus
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jan 12 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.27-11
|
||||||
|
- Refactor surrounding text warning
|
||||||
|
|
||||||
* Fri Jan 06 2023 Tomas Popela <tpopela@redhat.com> - 1.5.27-10
|
* Fri Jan 06 2023 Tomas Popela <tpopela@redhat.com> - 1.5.27-10
|
||||||
- Don't build GTK 2 content for RHEL 10 as GTK 2 won't be there
|
- Don't build GTK 2 content for RHEL 10 as GTK 2 won't be there
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user