diff options
author | fujiwarat <takao.fujiwara1@gmail.com> | 2021-09-06 20:23:59 +0900 |
---|---|---|
committer | fujiwarat <takao.fujiwara1@gmail.com> | 2021-09-06 20:23:59 +0900 |
commit | 5487a6baa4b22605ba8197ca1a0fa43c91d57786 (patch) | |
tree | 8d091cf107c14d954037ff078224c842e41eedf1 | |
parent | ecca9db0d9750e8a4803758302510999084ff1b2 (diff) | |
download | ibus-5487a6baa4b22605ba8197ca1a0fa43c91d57786.tar.gz |
client/gtk2/ibusimcontext: Implement clear preedit for GTK4
IBus IM module uses synchornized key processes for GTK4 and the timing
of the GTK reset siginal may work with focus-in/out between windows.
(I don't test GTK4 firefox and terminal yet and the verification is not
completed.)
So ibus_im_context_clear_preedit_text() is now called with the GTK4 reset
siginal.
ibus_im_context_clear_preedit_text() works with ibus-setup-anthy ->
"Conversion" tab -> "Behavior on Focus Out" pull down menu.
BUG=https://github.com/ibus/ibus/issues/2334
-rw-r--r-- | client/gtk2/ibusimcontext.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c index b1ccede9..e12be45d 100644 --- a/client/gtk2/ibusimcontext.c +++ b/client/gtk2/ibusimcontext.c @@ -1270,6 +1270,8 @@ ibus_im_context_reset (GtkIMContext *context) * IBus uses button-press-event instead until GTK is fixed. * https://gitlab.gnome.org/GNOME/gtk/issues/1534 */ + if (_use_sync_mode) + ibus_im_context_clear_preedit_text (ibusimcontext); ibus_input_context_reset (ibusimcontext->ibuscontext); } gtk_im_context_reset (ibusimcontext->slave); @@ -1383,7 +1385,7 @@ ibus_im_context_set_client_window (GtkIMContext *context, if (ibusimcontext->client_window) { #if !GTK_CHECK_VERSION (3, 98, 4) - if (ibusimcontext->use_button_press_event) + if (ibusimcontext->use_button_press_event && !_use_sync_mode) _connect_button_press_event (ibusimcontext, FALSE); #endif g_object_unref (ibusimcontext->client_window); @@ -1393,7 +1395,7 @@ ibus_im_context_set_client_window (GtkIMContext *context, if (client != NULL) { ibusimcontext->client_window = g_object_ref (client); #if !GTK_CHECK_VERSION (3, 98, 4) - if (!ibusimcontext->use_button_press_event) + if (!ibusimcontext->use_button_press_event && !_use_sync_mode) _connect_button_press_event (ibusimcontext, TRUE); #endif } @@ -1994,7 +1996,8 @@ _ibus_context_update_preedit_text_cb (IBusInputContext *ibuscontext, #if !GTK_CHECK_VERSION (3, 98, 4) if (!ibusimcontext->use_button_press_event && - mode == IBUS_ENGINE_PREEDIT_COMMIT) { + mode == IBUS_ENGINE_PREEDIT_COMMIT && + !_use_sync_mode) { if (ibusimcontext->client_window) { _connect_button_press_event (ibusimcontext, TRUE); } |