]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix source reporting for focus in and focus out events
authorPo Lu <luangruo@yahoo.com>
Sat, 9 Apr 2022 01:12:24 +0000 (09:12 +0800)
committerPo Lu <luangruo@yahoo.com>
Sat, 9 Apr 2022 01:12:24 +0000 (09:12 +0800)
* src/xterm.c (handle_one_xevent): Report source name for
FocusIn and FocusOut events.

src/xterm.c

index 038dbcfe87d0973cf53b8540f2ac42acfedf3e7c..329376cab2c42960313b66a963d60342fa2bfaf5 100644 (file)
@@ -15866,8 +15866,10 @@ handle_one_xevent (struct x_display_info *dpyinfo,
          case XI_FocusIn:
            {
              XIFocusInEvent *focusin = (XIFocusInEvent *) xi_event;
+             struct xi_device_t *source;
 
              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
@@ -15895,16 +15897,25 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                      XSETFRAME (inev.ie.frame_or_window, f);
                    }
                }
+
              x_detect_focus_change (dpyinfo, any, event, &inev.ie);
+
+             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;
 
              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);
+
+             if (inev.ie.kind != NO_EVENT && source)
+               inev.ie.device = source->name;
              goto XI_OTHER;
            }