public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ibus] autotool: Implement ibus_im_context_set_surrounding_with_selection()
@ 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 : 6d1c1930320b0270c7b6a3b8f0525ef85b72011f
Author : Takao Fujiwara <tfujiwar@redhat.com>
Date   : 2021-05-21T12:28:05+09:00
Stats  : +124/-0 in 1 file(s)
URL    : https://src.fedoraproject.org/rpms/ibus/c/6d1c1930320b0270c7b6a3b8f0525ef85b72011f?branch=autotool

Log:
Implement ibus_im_context_set_surrounding_with_selection()

---
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index 021f84a..4486994 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -106,3 +106,127 @@ index 4232c549..23e3411e 100755
 -- 
 2.28.0
 
+From d105a3941aad53b0c7470a1e9c1033987b029fb8 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Wed, 12 May 2021 18:54:30 +0900
+Subject: [PATCH] client/gtk2: Implement
+ ibus_im_context_set_surrounding_with_selection()
+
+Selection bounds need to be re-calculated when pre-edit text is
+inserted and the selection position is changed.
+GTK4 has a new API GtkIMContext.set_surrounding_with_selection()
+to fix this issue and now IBus GTK module inherits the API.
+
+BUG=https://github.com/ibus/ibus/issues/2013
+---
+ client/gtk2/ibusimcontext.c | 53 ++++++++++++++++++++++++++++++-------
+ 1 file changed, 44 insertions(+), 9 deletions(-)
+
+diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
+index e153081d..61194816 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -2,8 +2,8 @@
+ /* vim:set et sts=4: */
+ /* ibus - The Input Bus
+  * Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com>
+- * Copyright (C) 2015-2020 Takao Fujiwara <takao.fujiwara1@gmail.com>
+- * Copyright (C) 2008-2020 Red Hat, Inc.
++ * Copyright (C) 2015-2021 Takao Fujiwara <takao.fujiwara1@gmail.com>
++ * Copyright (C) 2008-2021 Red Hat, Inc.
+  *
+  * This library is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+@@ -165,11 +165,19 @@ static void     ibus_im_context_set_cursor_location
+ static void     ibus_im_context_set_use_preedit
+                                             (GtkIMContext           *context,
+                                              gboolean               use_preedit);
++#if !GTK_CHECK_VERSION (4, 1, 2)
+ static void     ibus_im_context_set_surrounding
+                                             (GtkIMContext  *slave,
+                                              const gchar   *text,
+-                                             gint           len,
+-                                             gint           cursor_index);
++                                             int            len,
++                                             int            cursor_index);
++#endif
++static void     ibus_im_context_set_surrounding_with_selection
++                                            (GtkIMContext  *slave,
++                                             const gchar   *text,
++                                             int            len,
++                                             int            cursor_index,
++                                             int            anchor_index);
+ 
+ /* static methods*/
+ static void     _ibus_context_update_preedit_text_cb
+@@ -724,7 +732,12 @@ ibus_im_context_class_init (IBusIMContextClass *class)
+ #endif
+     im_context_class->set_cursor_location = ibus_im_context_set_cursor_location;
+     im_context_class->set_use_preedit = ibus_im_context_set_use_preedit;
++#if GTK_CHECK_VERSION (4, 1, 2)
++    im_context_class->set_surrounding_with_selection
++            = ibus_im_context_set_surrounding_with_selection;
++#else
+     im_context_class->set_surrounding = ibus_im_context_set_surrounding;
++#endif
+     gobject_class->notify = ibus_im_context_notify;
+     gobject_class->finalize = ibus_im_context_finalize;
+ 
+@@ -1624,8 +1637,22 @@ get_selection_anchor_point (IBusIMContext *ibusimcontext,
+ static void
+ ibus_im_context_set_surrounding (GtkIMContext  *context,
+                                  const gchar   *text,
+-                                 gint           len,
+-                                 gint           cursor_index)
++                                 int            len,
++                                 int            cursor_index)
++{
++    ibus_im_context_set_surrounding_with_selection (context,
++                                                    text,
++                                                    len,
++                                                    cursor_index,
++                                                    cursor_index);
++}
++
++static void
++ibus_im_context_set_surrounding_with_selection (GtkIMContext  *context,
++                                                const gchar   *text,
++                                                int            len,
++                                                int            cursor_index,
++                                                int            anchor_index)
+ {
+     g_return_if_fail (context != NULL);
+     g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
+@@ -1647,18 +1674,26 @@ ibus_im_context_set_surrounding (GtkIMContext  *context,
+         ibustext = ibus_text_new_from_string (p);
+         g_free (p);
+ 
+-        guint anchor_pos = get_selection_anchor_point (ibusimcontext,
+-                                                       cursor_pos,
+-                                                       utf8_len);
++        gint anchor_pos = get_selection_anchor_point (ibusimcontext,
++                                                      cursor_pos,
++                                                      utf8_len);
+         ibus_input_context_set_surrounding_text (ibusimcontext->ibuscontext,
+                                                  ibustext,
+                                                  cursor_pos,
+                                                  anchor_pos);
+     }
++#if GTK_CHECK_VERSION (4, 1, 2)
++    gtk_im_context_set_surrounding_with_selection (ibusimcontext->slave,
++                                                   text,
++                                                   len,
++                                                   cursor_index,
++                                                   anchor_index);
++#else
+     gtk_im_context_set_surrounding (ibusimcontext->slave,
+                                     text,
+                                     len,
+                                     cursor_index);
++#endif
+ }
+ 
+ static void
+-- 
+2.28.0
+

^ 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: Implement ibus_im_context_set_surrounding_with_selection() Takao Fujiwara

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