[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 8aea472: Move XI2 event filtering to a more appropriate location
From: |
Po Lu |
Subject: |
master 8aea472: Move XI2 event filtering to a more appropriate location |
Date: |
Mon, 22 Nov 2021 01:09:54 -0500 (EST) |
branch: master
commit 8aea4721d9fadfaaabfea7843df71b62e3fb94a7
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Move XI2 event filtering to a more appropriate location
* src/xterm.c (handle_one_xevent): Filter all key press events
even if no frame is found.
---
src/xterm.c | 55 ++++++++++++++++++++++++++++++-------------------------
1 file changed, 30 insertions(+), 25 deletions(-)
diff --git a/src/xterm.c b/src/xterm.c
index 4e7ecd8..197776c 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -10312,6 +10312,36 @@ handle_one_xevent (struct x_display_info *dpyinfo,
ptrdiff_t i;
int nchars, len;
+#if defined (USE_X_TOOLKIT) || defined (USE_GTK)
+ /* Dispatch XI_KeyPress events when in menu. */
+ if (popup_activated ())
+ goto XI_OTHER;
+#endif
+
+#ifdef HAVE_X_I18N
+ XKeyPressedEvent xkey;
+
+ memset (&xkey, 0, sizeof xkey);
+
+ xkey.type = KeyPress;
+ xkey.serial = 0;
+ xkey.send_event = xev->send_event;
+ xkey.display = xev->display;
+ xkey.window = xev->event;
+ xkey.root = xev->root;
+ xkey.subwindow = xev->child;
+ xkey.time = xev->time;
+ xkey.state = xev->mods.effective;
+ xkey.keycode = xev->detail;
+ xkey.same_screen = True;
+
+ if (x_filter_event (dpyinfo, (XEvent *) &xkey))
+ {
+ *finish = X_EVENT_DROP;
+ goto XI_OTHER;
+ }
+#endif
+
#ifdef HAVE_XKB
if (dpyinfo->xkb_desc)
{
@@ -10341,12 +10371,6 @@ handle_one_xevent (struct x_display_info *dpyinfo,
x_display_set_last_user_time (dpyinfo, xev->time);
ignore_next_mouse_click_timeout = 0;
-#if defined (USE_X_TOOLKIT) || defined (USE_GTK)
- /* Dispatch XI_KeyPress events when in menu. */
- if (popup_activated ())
- goto XI_OTHER;
-#endif
-
f = x_any_window_to_frame (dpyinfo, xev->event);
/* If mouse-highlight is an integer, input clears out
@@ -10385,25 +10409,6 @@ handle_one_xevent (struct x_display_info *dpyinfo,
inev.ie.timestamp = xev->time;
#ifdef HAVE_X_I18N
- XKeyPressedEvent xkey;
-
- memset (&xkey, 0, sizeof xkey);
-
- xkey.type = KeyPress;
- xkey.serial = 0;
- xkey.send_event = xev->send_event;
- xkey.display = xev->display;
- xkey.window = xev->event;
- xkey.root = xev->root;
- xkey.subwindow = xev->child;
- xkey.time = xev->time;
- xkey.state = state;
- xkey.keycode = keycode;
- xkey.same_screen = True;
-
- if (x_filter_event (dpyinfo, (XEvent *) &xkey))
- goto xi_done_keysym;
-
if (FRAME_XIC (f))
{
Status status_return;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 8aea472: Move XI2 event filtering to a more appropriate location,
Po Lu <=