emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 748eb32cc5: Try to fix input method flicker on GTK builds


From: Po Lu
Subject: master 748eb32cc5: Try to fix input method flicker on GTK builds
Date: Thu, 3 Feb 2022 20:05:55 -0500 (EST)

branch: master
commit 748eb32cc5e3e4264f074e6237dc544496f1c6f1
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    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 68488b3ef5..c24a2ab686 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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]