emacs-diffs
[Top][All Lists]
Advanced

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

master 5181276: Stop using XI focus events on non-GTK builds


From: Po Lu
Subject: master 5181276: Stop using XI focus events on non-GTK builds
Date: Sun, 12 Dec 2021 20:19:03 -0500 (EST)

branch: master
commit 5181276b4362b25cd91818bc0b4e6fbd985b5882
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Stop using XI focus events on non-GTK builds
    
    * src/xfns.c (setup_xi_event_mask): Stop setting XI_FocusIn
    and XI_FocusOut.
    * src/xterm.c (x_detect_focus_change) <GenericEvent>: Don't
    handle XI_FocusIn and XI_FocusOut events when not on GTK.
---
 src/xfns.c  |  2 ++
 src/xterm.c | 26 +++++++++++++++-----------
 2 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/src/xfns.c b/src/xfns.c
index 5eff9f5..b569482 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -2936,8 +2936,10 @@ setup_xi_event_mask (struct frame *f)
   XISetMask (m, XI_Motion);
   XISetMask (m, XI_Enter);
   XISetMask (m, XI_Leave);
+#if 0
   XISetMask (m, XI_FocusIn);
   XISetMask (m, XI_FocusOut);
+#endif
   XISelectEvents (FRAME_X_DISPLAY (f),
                  FRAME_X_WINDOW (f),
                  &mask, 1);
diff --git a/src/xterm.c b/src/xterm.c
index 9d60292..1f377f8 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -5144,19 +5144,23 @@ x_detect_focus_change (struct x_display_info *dpyinfo, 
struct frame *frame,
         int focus_state
           = focus_frame ? focus_frame->output_data.x->focus_state : 0;
 
-       if (((((xi_event->evtype == XI_Enter
-               || xi_event->evtype == XI_Leave)
-              && (((XIEnterEvent *) xi_event)->detail
-                  != XINotifyInferior)
-              && !(focus_state & FOCUS_EXPLICIT))
-             || xi_event->evtype == XI_FocusIn
-             || xi_event->evtype == XI_FocusOut)))
+#ifdef USE_GTK
+       if (xi_event->evtype == XI_FocusIn
+           || xi_event->evtype == XI_FocusOut)
+         x_focus_changed ((xi_event->evtype == XI_FocusIn
+                           ? FocusIn : FocusOut),
+                          FOCUS_EXPLICIT,
+                          dpyinfo, frame, bufp);
+       else
+#endif
+         if ((xi_event->evtype == XI_Enter
+              || xi_event->evtype == XI_Leave)
+             && (((XIEnterEvent *) xi_event)->detail
+                 != XINotifyInferior)
+             && !(focus_state & FOCUS_EXPLICIT))
          x_focus_changed ((xi_event->evtype == XI_Enter
-                           || xi_event->evtype == XI_FocusIn
                            ? FocusIn : FocusOut),
-                          (xi_event->evtype == XI_Enter
-                           || xi_event->evtype == XI_Leave
-                           ? FOCUS_IMPLICIT : FOCUS_EXPLICIT),
+                          FOCUS_IMPLICIT,
                           dpyinfo, frame, bufp);
        break;
       }



reply via email to

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