]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve XI focus handling
authorPo Lu <luangruo@yahoo.com>
Sat, 6 Aug 2022 02:17:38 +0000 (10:17 +0800)
committerPo Lu <luangruo@yahoo.com>
Sat, 6 Aug 2022 02:17:38 +0000 (10:17 +0800)
* src/xterm.c (handle_one_xevent): Skip useless
x_detect_focus_change calls in some cases.

src/xterm.c

index 4bbcfb0e59642148109de469a879f91796c02026..bb06ee1535ca777130f682b4f1312bdf5d5067cf 100644 (file)
@@ -20016,11 +20016,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
          {
          case XI_FocusIn:
            {
-             XIFocusInEvent *focusin = (XIFocusInEvent *) xi_event;
-             struct xi_device_t *source;
+             XIFocusInEvent *focusin;
 
+             focusin = (XIFocusInEvent *) xi_event;
              any = x_any_window_to_frame (dpyinfo, focusin->event);
-             source = xi_device_from_id (dpyinfo, focusin->sourceid);
+
 #ifdef USE_GTK
              /* Some WMs (e.g. Mutter in Gnome Shell), don't unmap
                 minimized/iconified windows; thus, for those WMs we won't get
@@ -20049,24 +20049,19 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                    }
                }
 
-             x_detect_focus_change (dpyinfo, any, event, &inev.ie);
+             xi_focus_handle_for_device (dpyinfo, any, xi_event);
 
-             if (inev.ie.kind != NO_EVENT && source)
-               inev.ie.device = source->name;
              goto XI_OTHER;
            }
 
          case XI_FocusOut:
            {
-             XIFocusOutEvent *focusout = (XIFocusOutEvent *) xi_event;
-             struct xi_device_t *source;
+             XIFocusOutEvent *focusout;
 
+             focusout = (XIFocusOutEvent *) xi_event;
              any = x_any_window_to_frame (dpyinfo, focusout->event);
-             source = xi_device_from_id (dpyinfo, focusout->sourceid);
-             x_detect_focus_change (dpyinfo, any, event, &inev.ie);
+             xi_focus_handle_for_device (dpyinfo, any, xi_event);
 
-             if (inev.ie.kind != NO_EVENT && source)
-               inev.ie.device = source->name;
              goto XI_OTHER;
            }