]> git.eshelyaron.com Git - emacs.git/commitdiff
Try to fix input method flicker on GTK builds
authorPo Lu <luangruo@yahoo.com>
Fri, 4 Feb 2022 01:04:06 +0000 (09:04 +0800)
committerPo Lu <luangruo@yahoo.com>
Fri, 4 Feb 2022 01:05:44 +0000 (09:05 +0800)
* src/xterm.c (x_focus_changed): Only focus GTK context if
native input is on.  (bug#53698)

src/xterm.c

index 68488b3ef5505be32a20692f0e20d8d0d645fd1c..c24a2ab68633108ada6bc88bfa48f579c6cd6a8f 100644 (file)
@@ -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)