From: Po Lu Date: Fri, 4 Feb 2022 01:04:06 +0000 (+0800) Subject: Try to fix input method flicker on GTK builds X-Git-Tag: emacs-29.0.90~2544 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=748eb32cc5e3e4264f074e6237dc544496f1c6f1;p=emacs.git 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) --- 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)