public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ibus] autotool: Resolves: #2093313 Stop many warnings of surrounding text
@ 2026-05-31  2:07 Takao Fujiwara
  0 siblings, 0 replies; only message in thread
From: Takao Fujiwara @ 2026-05-31  2:07 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/ibus
            Branch : autotool
            Commit : 966b2fc35c01d73232cc364202f88ab7101e12fb
            Author : Takao Fujiwara <tfujiwar@redhat.com>
            Date   : 2022-09-16T18:24:38+09:00
            Stats  : +303/-1 in 2 file(s)
            URL    : https://src.fedoraproject.org/rpms/ibus/c/966b2fc35c01d73232cc364202f88ab7101e12fb?branch=autotool

            Log:
            Resolves: #2093313 Stop many warnings of surrounding text

Also fix other surrounding text issues

---
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index e69de29..798101a 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -0,0 +1,295 @@
+From babad7839ba6d72609c717d647bb2928724b4cc3 Mon Sep 17 00:00:00 2001
+From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
+Date: Tue, 6 Sep 2022 17:08:43 +0900
+Subject: [PATCH] tools: Check libdl for dlclose() properly in configure
+
+BUG=https://github.com/ibus/ibus/pull/2442
+---
+ configure.ac      | 4 ++++
+ tools/Makefile.am | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0868d6c9..2344523a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -147,6 +147,10 @@ AC_CHECK_HEADERS([sys/prctl.h])
+ # Check functions.
+ AC_CHECK_FUNCS(daemon)
+ 
++# Check dlclose() in libc.so.
++AC_CHECK_LIB(c, dlclose, LIBDL="", [AC_CHECK_LIB(dl, dlclose, LIBDL="-ldl")])
++AC_SUBST(LIBDL)
++
+ # Check packages.
+ # Check glib2.
+ AM_PATH_GLIB_2_0
+diff --git a/tools/Makefile.am b/tools/Makefile.am
+index b82395da..e300f9f3 100644
+--- a/tools/Makefile.am
++++ b/tools/Makefile.am
+@@ -63,7 +63,7 @@ AM_LDADD = \
+     @GTHREAD2_LIBS@ \
+     $(libibus) \
+     $(libibusimmodule) \
+-    -ldl               \
++    $(LIBDL) \
+     $(NULL)
+ 
+ AM_VALAFLAGS = \
+-- 
+2.37.3
+
+From 39b69073ad34ab89a3e5aa012ff740c84f69eb8f Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 16 Sep 2022 14:30:35 +0900
+Subject: [PATCH] client/gtk2: Stop many warnings of surrounding text
+
+Surrounding text is requested by ibus_im_context_filter_keypress()
+and the no supported warning could be output many times.
+Now the warning is output one time by input context but
+brower applicaations do not use GtkWidget for the input context
+so the warning is output by instance but not input context.
+
+BUG=https://github.com/ibus/ibus/issues/2418
+---
+ client/gtk2/ibusimcontext.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
+index bc14df00..3fc9c0f2 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -567,6 +567,7 @@ _process_key_event (IBusInputContext *context,
+ static void
+ _request_surrounding_text (IBusIMContext *context)
+ {
++    static gboolean warned = FALSE;
+     if (context &&
+         (context->caps & IBUS_CAP_SURROUNDING_TEXT) != 0 &&
+         context->ibuscontext != NULL &&
+@@ -580,8 +581,11 @@ _request_surrounding_text (IBusIMContext *context)
+              * fail with the first typing on firefox but it succeeds with
+              * the second typing.
+              */
+-            g_warning ("%s has no capability of surrounding-text feature",
+-                       g_get_prgname ());
++            if (!warned) {
++                g_warning ("%s has no capability of surrounding-text feature",
++                           g_get_prgname ());
++                warned = TRUE;
++            }
+         }
+     }
+ }
+-- 
+2.37.3
+
+From 50f8d8b79bc8eac1bae80116fe669d7314a44663 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 16 Sep 2022 14:34:54 +0900
+Subject: [PATCH] client/gtk2: Update capabilities if "retrieve-surrounding" is
+ failed
+
+Some engine developers wish to update the capabilities if emitting
+"retrieve-surrounding" signal is failed so that engines disable the
+surrounding text feature but I had deleted the logic with #2054 since
+the second typing could be succeeded.
+Asking all applications the second typing would not be a good condition
+and the special issue should be fixed in firefox.
+
+Fixes: https://github.com/ibus/ibus/commit/7b3b8c8b0c
+
+BUG=https://github.com/ibus/ibus/issues/2054
+BUG=https://github.com/ibus/ibus/issues/2354
+---
+ client/gtk2/ibusimcontext.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
+index 3fc9c0f2..eaf7eb90 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -577,10 +577,14 @@ _request_surrounding_text (IBusIMContext *context)
+         g_signal_emit (context, _signal_retrieve_surrounding_id, 0,
+                        &return_value);
+         if (!return_value) {
+-            /* #2054 firefox::IMContextWrapper::GetCurrentParagraph() could
+-             * fail with the first typing on firefox but it succeeds with
+-             * the second typing.
++            /* 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 ());
+-- 
+2.37.3
+
+From 483abb429fed4c51e214fa6c1efbb54ca73d5b28 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 16 Sep 2022 14:50:53 +0900
+Subject: [PATCH] client/gtk2: Update surrounding text properties by focus in
+
+ibus_input_context_set_surrounding_text() should be succeeded
+if input contexts are different so that ibus engines can
+update surrounding text properties with focus in event.
+
+When an input context is created newly, RequireSurroundingText D-Bus
+signal could not be received yet and set_surrounding_text() is failed.
+Now "require-surrounding-text" signal is added to IBusInputContext
+and clients can call set_surrounding_text() later.
+
+BUG=https://github.com/ibus/ibus/issues/2423
+---
+ client/gtk2/ibusimcontext.c | 25 +++++++++++++++++++++++++
+ src/ibusinputcontext.c      | 24 ++++++++++++++++++++++--
+ 2 files changed, 47 insertions(+), 2 deletions(-)
+
+diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
+index eaf7eb90..6e338157 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -70,6 +70,7 @@ struct _IBusIMContext {
+ #endif
+ 
+     IBusInputContext *ibuscontext;
++    IBusInputContext *ibuscontext_needs_surrounding;
+ 
+     /* preedit status */
+     gchar           *preedit_string;
+@@ -985,6 +986,7 @@ 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
+@@ -2183,6 +2185,18 @@ _ibus_context_hide_preedit_text_cb (IBusInputContext *ibuscontext,
+     g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
+ }
+ 
++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;
++    }
++}
++
+ static void
+ _ibus_context_destroy_cb (IBusInputContext *ibuscontext,
+                           IBusIMContext    *ibusimcontext)
+@@ -2249,6 +2263,11 @@ _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);
+@@ -2265,6 +2284,12 @@ _create_input_context_done (IBusBus       *bus,
+ 
+             ibus_input_context_focus_in (ibusimcontext->ibuscontext);
+             _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 (!g_queue_is_empty (ibusimcontext->events_queue)) {
+diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c
+index 7981de38..ed887dde 100644
+--- a/src/ibusinputcontext.c
++++ b/src/ibusinputcontext.c
+@@ -2,7 +2,7 @@
+ /* vim:set et sts=4: */
+ /* ibus - The Input Bus
+  * Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com>
+- * Copyright (C) 2018-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
++ * Copyright (C) 2018-2022 Takao Fujiwara <takao.fujiwara1@gmail.com>
+  * Copyright (C) 2008-2019 Red Hat, Inc.
+  *
+  * This library is free software; you can redistribute it and/or
+@@ -55,6 +55,7 @@ enum {
+     CURSOR_DOWN_LOOKUP_TABLE,
+     REGISTER_PROPERTIES,
+     UPDATE_PROPERTY,
++    REQUIRE_SURROUNDING_TEXT,
+     LAST_SIGNAL,
+ };
+ 
+@@ -488,6 +489,21 @@ ibus_input_context_class_init (IBusInputContextClass *class)
+             1,
+             IBUS_TYPE_PROPERTY);
+ 
++    /**
++     * IBusInputContext::require-surrounding-text:
++     * @context: An IBusInputContext.
++     *
++     * Emitted to receive the RequireSurroundingText signal from the daemon.
++     */
++    context_signals[REQUIRE_SURROUNDING_TEXT] =
++        g_signal_new (I_("require-surrounding-text"),
++            G_TYPE_FROM_CLASS (class),
++            G_SIGNAL_RUN_LAST,
++            0,
++            NULL, NULL,
++            _ibus_marshal_VOID__VOID,
++            G_TYPE_NONE, 0);
++
+     text_empty = ibus_text_new_from_static_string ("");
+     g_object_ref_sink (text_empty);
+ }
+@@ -735,6 +751,7 @@ ibus_input_context_g_signal (GDBusProxy  *proxy,
+ 
+     if (g_strcmp0 (signal_name, "RequireSurroundingText") == 0) {
+         priv->needs_surrounding_text = TRUE;
++        g_signal_emit (context, context_signals[REQUIRE_SURROUNDING_TEXT], 0);
+         return;
+     }
+ 
+@@ -1109,6 +1126,7 @@ ibus_input_context_set_surrounding_text (IBusInputContext   *context,
+                                          guint32             cursor_pos,
+                                          guint32             anchor_pos)
+ {
++    static IBusInputContext *prev_context = NULL;
+     IBusInputContextPrivate *priv;
+ 
+     g_assert (IBUS_IS_INPUT_CONTEXT (context));
+@@ -1119,12 +1137,14 @@ ibus_input_context_set_surrounding_text (IBusInputContext   *context,
+     if (cursor_pos != priv->surrounding_cursor_pos ||
+         anchor_pos != priv->selection_anchor_pos ||
+         priv->surrounding_text == NULL ||
+-        g_strcmp0 (text->text, priv->surrounding_text->text) != 0) {
++        g_strcmp0 (text->text, priv->surrounding_text->text) != 0 ||
++        context != prev_context) {
+         if (priv->surrounding_text)
+             g_object_unref (priv->surrounding_text);
+         priv->surrounding_text = (IBusText *) g_object_ref_sink (text);
+         priv->surrounding_cursor_pos = cursor_pos;
+         priv->selection_anchor_pos = anchor_pos;
++        prev_context = context;
+ 
+         if (priv->needs_surrounding_text) {
+             GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)text);
+-- 
+2.37.3
+

diff --git a/ibus.spec b/ibus.spec
index d76ae83..3a7db6b 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -39,7 +39,7 @@
 
 Name:           ibus
 Version:        1.5.27
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Intelligent Input Bus for Linux OS
 License:        LGPLv2+
 URL:            https://github.com/ibus/%name/wiki
@@ -47,6 +47,7 @@ Source0:        https://github.com/ibus/%name/releases/download/%{version}/%{nam
 Source1:        %{name}-xinput
 Source2:        %{name}.conf.5
 # Patch0:         %%{name}-HEAD.patch
+Patch0:         %{name}-HEAD.patch
 # Under testing #1349148 #1385349 #1350291 #1406699 #1432252 #1601577
 Patch1:         %{name}-1385349-segv-bus-proxy.patch
 %if 0%{?fedora:0}%{?rhel:1}
@@ -277,6 +278,8 @@ the functionality of the installed %{name} package.
 # cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c || :
 # cp client/gtk2/ibusim.c client/gtk3/ibusim.c || :
 # cp client/gtk2/ibusimcontext.c client/gtk4/ibusimcontext.c || :
+cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c || :
+cp client/gtk2/ibusimcontext.c client/gtk4/ibusimcontext.c || :
 
 
 # prep test
@@ -518,6 +521,10 @@ dconf update || :
 %{_datadir}/installed-tests/ibus
 
 %changelog
+* Fri Sep 16 2022 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.27-2
+- Resolves: #2093313 Stop many warnings of surrounding text
+- Fix other surrounding text issues
+
 * Tue Aug 23 2022 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.27-1
 - Bump to 1.5.27
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-05-31  2:07 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-31  2:07 [rpms/ibus] autotool: Resolves: #2093313 Stop many warnings of surrounding text Takao Fujiwara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox