public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ibus] autotool: Always reset and clear preedit on mouse click
@ 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 : 4f9e8c780537341a55131448448dc12e28477ad4
Author : Takao Fujiwara <tfujiwar@redhat.com>
Date : 2018-12-10T14:18:18+09:00
Stats : +313/-1 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/ibus/c/4f9e8c780537341a55131448448dc12e28477ad4?branch=autotool
Log:
Always reset and clear preedit on mouse click
- Show compose preedit with custom compose file
- Clear preedit in IBusEngineSimple with focus changes
- Obsolete ibus-xkbc since Fedora 30
---
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index bc5f57b..5a14514 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -1716,3 +1716,307 @@ index 73a0eaec..82af51a1 100644
--
2.17.1
+From 4c40afba9c862b4f6651b1b971553e5e89e83343 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Thu, 6 Dec 2018 16:53:57 +0900
+Subject: [PATCH] client/gtk2: Always reset and clear preedit on mouse click
+
+Thinking about the reset signal again, now I think it's good to emit
+the reset signal and clear the preedit on mouse click for any engines
+besides Hangul because the behavior could be handled by each engine
+with the reset signal.
+
+BUG=https://github.com/ibus/ibus/issues/1980
+---
+ client/gtk2/ibusimcontext.c | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
+index 82af51a1..ed7fea6e 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -869,16 +869,19 @@ ibus_im_context_finalize (GObject *obj)
+ static void
+ ibus_im_context_clear_preedit_text (IBusIMContext *ibusimcontext)
+ {
++ gchar *preedit_string = NULL;
+ g_assert (ibusimcontext->ibuscontext);
+ if (ibusimcontext->preedit_visible &&
+ ibusimcontext->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) {
+- gchar *preedit_string = g_strdup (ibusimcontext->preedit_string);
+- _ibus_context_update_preedit_text_cb (ibusimcontext->ibuscontext,
+- ibus_text_new_from_string (""),
+- 0,
+- FALSE,
+- IBUS_ENGINE_PREEDIT_CLEAR,
+- ibusimcontext);
++ preedit_string = g_strdup (ibusimcontext->preedit_string);
++ }
++ _ibus_context_update_preedit_text_cb (ibusimcontext->ibuscontext,
++ ibus_text_new_from_string (""),
++ 0,
++ FALSE,
++ IBUS_ENGINE_PREEDIT_CLEAR,
++ ibusimcontext);
++ if (preedit_string) {
+ g_signal_emit (ibusimcontext, _signal_commit_id, 0, preedit_string);
+ g_free (preedit_string);
+ _request_surrounding_text (ibusimcontext);
+@@ -1114,12 +1117,9 @@ ibus_im_context_button_press_event_cb (GtkWidget *widget,
+ if (event->button != 1)
+ return FALSE;
+
+- if (ibusimcontext->preedit_visible &&
+- ibusimcontext->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) {
+- ibus_im_context_clear_preedit_text (ibusimcontext);
+- if (ibusimcontext->ibuscontext)
+- ibus_input_context_reset (ibusimcontext->ibuscontext);
+- }
++ ibus_im_context_clear_preedit_text (ibusimcontext);
++ if (ibusimcontext->ibuscontext)
++ ibus_input_context_reset (ibusimcontext->ibuscontext);
+ return FALSE;
+ }
+
+--
+2.19.1
+
+From ba41173c45a4ba6e047f94ac53474433c7643591 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 7 Dec 2018 17:38:09 +0900
+Subject: [PATCH] src: Show compose preedit with custom compose file
+
+IBusEngineSimple is fixed for custom compose files
+ - Show preeedit with custom compose file
+ - Tentative compose preedit can be deleted by Backspace
+
+BUG=https://github.com/ibus/ibus/issues/2058
+---
+ src/ibusenginesimple.c | 93 ++++++++++++++++++++++++------------------
+ 1 file changed, 53 insertions(+), 40 deletions(-)
+
+diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c
+index aae6b8df..ba9d92b6 100644
+--- a/src/ibusenginesimple.c
++++ b/src/ibusenginesimple.c
+@@ -357,7 +357,7 @@ ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple)
+ } else {
+ int hexchars = 0;
+ while (priv->compose_buffer[hexchars] != 0) {
+- guint16 keysym= priv->compose_buffer[hexchars];
++ guint16 keysym = priv->compose_buffer[hexchars];
+ gunichar unichar = ibus_keysym_to_unicode (keysym, FALSE);
+ if (unichar > 0)
+ outbuf[len] = unichar;
+@@ -620,6 +620,8 @@ check_table (IBusEngineSimple *simple,
+
+ guint16 *prev_seq;
+
++ priv->tentative_match = 0;
++ priv->tentative_match_len = 0;
+ /* Back up to the first sequence that matches to make sure
+ * we find the exact match if their is one.
+ */
+@@ -654,9 +656,9 @@ check_table (IBusEngineSimple *simple,
+
+ ibus_engine_simple_commit_char (simple, value);
+ priv->compose_buffer[0] = 0;
+- ibus_engine_simple_update_preedit_text (simple);
+ // g_debug ("U+%04X\n", value);
+ }
++ ibus_engine_simple_update_preedit_text (simple);
+ return TRUE;
+ }
+
+@@ -1057,6 +1059,51 @@ ibus_engine_simple_set_number_on_lookup_table (IBusEngineSimple *simple,
+ ibus_engine_simple_update_preedit_text (simple);
+ }
+
++static gboolean
++ibus_engine_simple_check_all_compose_table (IBusEngineSimple *simple,
++ gint n_compose)
++{
++ IBusEngineSimplePrivate *priv = simple->priv;
++ gboolean compose_finish;
++ gunichar output_char;
++ GSList *list = global_tables;
++
++ while (list) {
++ if (check_table (simple,
++ (IBusComposeTable *)list->data,
++ n_compose)) {
++ return TRUE;
++ }
++ list = list->next;
++ }
++
++ if (ibus_check_compact_table (&ibus_compose_table_compact,
++ priv->compose_buffer,
++ n_compose,
++ &compose_finish,
++ &output_char)) {
++ if (compose_finish) {
++ ibus_engine_simple_commit_char (simple, output_char);
++ priv->compose_buffer[0] = 0;
++ }
++ ibus_engine_simple_update_preedit_text (simple);
++ return TRUE;
++ }
++
++ if (ibus_check_algorithmically (priv->compose_buffer,
++ n_compose,
++ &output_char)) {
++ if (output_char) {
++ ibus_engine_simple_commit_char (simple, output_char);
++ priv->compose_buffer[0] = 0;
++ }
++ ibus_engine_simple_update_preedit_text (simple);
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
+ static gboolean
+ ibus_engine_simple_process_key_event (IBusEngine *engine,
+ guint keyval,
+@@ -1076,8 +1123,6 @@ ibus_engine_simple_process_key_event (IBusEngine *engine,
+ guint hex_keyval;
+ guint printable_keyval;
+ gint i;
+- gboolean compose_finish;
+- gunichar output_char;
+
+ while (n_compose < EMOJI_SOURCE_LEN && priv->compose_buffer[n_compose] != 0)
+ n_compose++;
+@@ -1247,7 +1292,8 @@ ibus_engine_simple_process_key_event (IBusEngine *engine,
+ if (n_compose > 0) {
+ n_compose--;
+ priv->compose_buffer[n_compose] = 0;
+- ibus_engine_simple_update_preedit_text (simple);
++ priv->tentative_match = 0;
++ ibus_engine_simple_check_all_compose_table (simple, n_compose);
+ return TRUE;
+ }
+ }
+@@ -1479,42 +1525,9 @@ ibus_engine_simple_process_key_event (IBusEngine *engine,
+
+ return TRUE;
+ }
+- }
+- else {
+- GSList *list = global_tables;
+- while (list) {
+- if (check_table (simple,
+- (IBusComposeTable *)list->data,
+- n_compose)) {
+- // g_debug("check_table returns true");
+- return TRUE;
+- }
+- list = list->next;
+- }
+-
+- if (ibus_check_compact_table (&ibus_compose_table_compact,
+- priv->compose_buffer,
+- n_compose,
+- &compose_finish,
+- &output_char)) {
+- if (compose_finish) {
+- ibus_engine_simple_commit_char (simple, output_char);
+- priv->compose_buffer[0] = 0;
+- }
+- ibus_engine_simple_update_preedit_text (simple);
+- return TRUE;
+- }
+-
+- if (ibus_check_algorithmically (priv->compose_buffer,
+- n_compose,
+- &output_char)) {
+- if (output_char) {
+- ibus_engine_simple_commit_char (simple, output_char);
+- priv->compose_buffer[0] = 0;
+- }
+- ibus_engine_simple_update_preedit_text (simple);
++ } else {
++ if (ibus_engine_simple_check_all_compose_table (simple, n_compose))
+ return TRUE;
+- }
+ }
+
+ /* The current compose_buffer doesn't match anything */
+--
+2.19.1
+
+From 28b0744ad141bd76281025e9d0857d2182bc2a65 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Mon, 10 Dec 2018 13:21:42 +0900
+Subject: [PATCH] src: Clear preedit in IBusEngineSimple with focus changes
+
+BUG=https://github.com/ibus/ibus/issues/2063
+---
+ src/ibusenginesimple.c | 23 ++++++++++++++++++++---
+ 1 file changed, 20 insertions(+), 3 deletions(-)
+
+diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c
+index ba9d92b6..7615f121 100644
+--- a/src/ibusenginesimple.c
++++ b/src/ibusenginesimple.c
+@@ -105,6 +105,8 @@ static GSList *global_tables;
+
+ /* functions prototype */
+ static void ibus_engine_simple_destroy (IBusEngineSimple *simple);
++static void ibus_engine_simple_focus_in (IBusEngine *engine);
++static void ibus_engine_simple_focus_out (IBusEngine *engine);
+ static void ibus_engine_simple_reset (IBusEngine *engine);
+ static gboolean ibus_engine_simple_process_key_event
+ (IBusEngine *engine,
+@@ -136,6 +138,8 @@ ibus_engine_simple_class_init (IBusEngineSimpleClass *class)
+ ibus_object_class->destroy =
+ (IBusObjectDestroyFunc) ibus_engine_simple_destroy;
+
++ engine_class->focus_in = ibus_engine_simple_focus_in;
++ engine_class->focus_out = ibus_engine_simple_focus_out;
+ engine_class->reset = ibus_engine_simple_reset;
+ engine_class->process_key_event
+ = ibus_engine_simple_process_key_event;
+@@ -176,6 +180,19 @@ ibus_engine_simple_destroy (IBusEngineSimple *simple)
+ IBUS_OBJECT (simple));
+ }
+
++static void
++ibus_engine_simple_focus_in (IBusEngine *engine)
++{
++ IBUS_ENGINE_CLASS (ibus_engine_simple_parent_class)->focus_in (engine);
++}
++
++static void
++ibus_engine_simple_focus_out (IBusEngine *engine)
++{
++ ibus_engine_simple_reset (engine);
++ IBUS_ENGINE_CLASS (ibus_engine_simple_parent_class)->focus_out (engine);
++}
++
+ static void
+ ibus_engine_simple_reset (IBusEngine *engine)
+ {
+@@ -188,14 +205,14 @@ ibus_engine_simple_reset (IBusEngine *engine)
+ priv->in_hex_sequence = FALSE;
+ priv->tentative_match = 0;
+ priv->tentative_match_len = 0;
+- ibus_engine_hide_preedit_text ((IBusEngine *)simple);
+ } else if (priv->tentative_emoji || priv->in_emoji_sequence) {
+ priv->in_emoji_sequence = FALSE;
+ g_clear_pointer (&priv->tentative_emoji, g_free);
+- ibus_engine_hide_preedit_text ((IBusEngine *)simple);
+ } else if (!priv->in_hex_sequence && !priv->in_emoji_sequence) {
+- ibus_engine_hide_preedit_text ((IBusEngine *)simple);
++ priv->tentative_match = 0;
++ priv->tentative_match_len = 0;
+ }
++ ibus_engine_hide_preedit_text ((IBusEngine *)simple);
+ }
+
+ static void
+--
+2.19.1
+
diff --git a/ibus.spec b/ibus.spec
index 733cba2..e923969 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -35,7 +35,7 @@
Name: ibus
Version: 1.5.19
-Release: 9%{?dist}
+Release: 10%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPLv2+
Group: System Environment/Libraries
@@ -118,9 +118,11 @@ Requires: %{_sbindir}/alternatives
Requires(post): %{_sbindir}/alternatives
Requires(postun): %{_sbindir}/alternatives
+%if (0%{?fedora} > 29 || 0%{?rhel} > 8)
# Obsoletes ibus-xkbc by ibus xkb engine
Provides: ibus-xkbc = 1.3.4
Obsoletes: ibus-xkbc < 1.3.4
+%endif
%global _xinputconf %{_sysconfdir}/X11/xinit/xinput.d/ibus.conf
@@ -434,6 +436,12 @@ dconf update || :
%{_datadir}/gtk-doc/html/*
%changelog
+* Mon Dec 10 2018 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.19-10
+- Always reset and clear preedit on mouse click
+- Show compose preedit with custom compose file
+- Clear preedit in IBusEngineSimple with focus changes
+- Obsolete ibus-xkbc since Fedora 30
+
* Thu Nov 15 2018 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.19-9
- Detect mouse click to commit Hangul preedit
- Do not delete IBUS_CAP_SURROUNDING_TEXT
^ 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: Always reset and clear preedit on mouse click Takao Fujiwara
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox