From 748eb32cc5e3e4264f074e6237dc544496f1c6f1 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Fri, 4 Feb 2022 09:04:06 +0800 Subject: [PATCH] Try to fix input method flicker on GTK builds * src/xterm.c (x_focus_changed): Only focus GTK context if native input is on. (bug#53698) --- src/xterm.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index 68488b3ef55..c24a2ab6863 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -5370,10 +5370,13 @@ x_focus_changed (int type, int state, struct x_display_info *dpyinfo, struct fra #ifdef USE_GTK GtkWidget *widget; - gtk_im_context_focus_in (FRAME_X_OUTPUT (frame)->im_context); - widget = FRAME_GTK_OUTER_WIDGET (frame); - gtk_im_context_set_client_window (FRAME_X_OUTPUT (frame)->im_context, - gtk_widget_get_window (widget)); + if (x_gtk_use_native_input) + { + gtk_im_context_focus_in (FRAME_X_OUTPUT (frame)->im_context); + widget = FRAME_GTK_OUTER_WIDGET (frame); + gtk_im_context_set_client_window (FRAME_X_OUTPUT (frame)->im_context, + gtk_widget_get_window (widget)); + } #endif #endif } @@ -5394,8 +5397,11 @@ x_focus_changed (int type, int state, struct x_display_info *dpyinfo, struct fra if (FRAME_XIC (frame)) XUnsetICFocus (FRAME_XIC (frame)); #ifdef USE_GTK - gtk_im_context_focus_out (FRAME_X_OUTPUT (frame)->im_context); - gtk_im_context_set_client_window (FRAME_X_OUTPUT (frame)->im_context, NULL); + if (x_gtk_use_native_input) + { + gtk_im_context_focus_out (FRAME_X_OUTPUT (frame)->im_context); + gtk_im_context_set_client_window (FRAME_X_OUTPUT (frame)->im_context, NULL); + } #endif #endif if (frame->pointer_invisible) -- 2.39.5