1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-09 13:10:57 -08:00

Correctly set up XI key input mask on X Toolkit builds

* src/xfns.c (setup_xi_event_mask): Also set the key event mask
on the outer window, which might also have the input focus.
(x_window) [USE_X_TOOLKIT]: Set up XI event mask a bit later.
This commit is contained in:
Po Lu 2022-01-05 09:39:57 +08:00
parent 30d4cfc080
commit 6719a3ccab

View file

@ -2934,15 +2934,11 @@ setup_xi_event_mask (struct frame *f)
XISetMask (m, XI_ButtonPress);
XISetMask (m, XI_ButtonRelease);
XISetMask (m, XI_KeyPress);
XISetMask (m, XI_KeyRelease);
XISetMask (m, XI_Motion);
XISetMask (m, XI_Enter);
XISetMask (m, XI_Leave);
#if 0
XISetMask (m, XI_FocusIn);
XISetMask (m, XI_FocusOut);
#endif
XISetMask (m, XI_KeyPress);
XISetMask (m, XI_KeyRelease);
XISelectEvents (FRAME_X_DISPLAY (f),
FRAME_X_WINDOW (f),
&mask, 1);
@ -2950,6 +2946,16 @@ setup_xi_event_mask (struct frame *f)
memset (m, 0, l);
#endif /* !USE_GTK */
#ifdef USE_X_TOOLKIT
XISetMask (m, XI_KeyPress);
XISetMask (m, XI_KeyRelease);
XISelectEvents (FRAME_X_DISPLAY (f),
FRAME_OUTER_WINDOW (f),
&mask, 1);
memset (m, 0, l);
#endif
mask.deviceid = XIAllDevices;
XISetMask (m, XI_PropertyEvent);
@ -3140,11 +3146,6 @@ x_window (struct frame *f, long window_prompting)
class_hints.res_class = SSDATA (Vx_resource_class);
XSetClassHint (FRAME_X_DISPLAY (f), XtWindow (shell_widget), &class_hints);
#ifdef HAVE_XINPUT2
if (FRAME_DISPLAY_INFO (f)->supports_xi2)
setup_xi_event_mask (f);
#endif
#ifdef HAVE_X_I18N
FRAME_XIC (f) = NULL;
if (use_xim)
@ -3232,6 +3233,11 @@ x_window (struct frame *f, long window_prompting)
/* This is a no-op, except under Motif. Make sure main areas are
set to something reasonable, in case we get an error later. */
lw_set_main_areas (pane_widget, 0, frame_widget);
#ifdef HAVE_XINPUT2
if (FRAME_DISPLAY_INFO (f)->supports_xi2)
setup_xi_event_mask (f);
#endif
}
#else /* not USE_X_TOOLKIT */