]> git.eshelyaron.com Git - emacs.git/commitdiff
Stop using XI focus events on non-GTK builds
authorPo Lu <luangruo@yahoo.com>
Mon, 13 Dec 2021 01:17:55 +0000 (09:17 +0800)
committerPo Lu <luangruo@yahoo.com>
Mon, 13 Dec 2021 01:17:55 +0000 (09:17 +0800)
* 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
src/xterm.c

index 5eff9f5b0f83827ddd87c2ab3bfeeca2f4eeb861..b5694829aef11f6e276de6bd6ca166a399c4f1ed 100644 (file)
@@ -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);
index 9d60292756d4e169b0ebffef2a1122f6b04aa301..1f377f838b39cb02de2e7070ff54b32b6739532b 100644 (file)
@@ -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;
       }