summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfujiwarat <takao.fujiwara1@gmail.com>2021-09-06 20:23:59 +0900
committerfujiwarat <takao.fujiwara1@gmail.com>2021-09-06 20:23:59 +0900
commit5487a6baa4b22605ba8197ca1a0fa43c91d57786 (patch)
tree8d091cf107c14d954037ff078224c842e41eedf1
parentecca9db0d9750e8a4803758302510999084ff1b2 (diff)
downloadibus-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.c9
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);
}