[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 626c1dce02: Filter key release events through GTK when using nati
From: |
Po Lu |
Subject: |
master 626c1dce02: Filter key release events through GTK when using native input |
Date: |
Thu, 13 Jan 2022 04:57:43 -0500 (EST) |
branch: master
commit 626c1dce02d4f2e8d0822decf8b421eee00674b1
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Filter key release events through GTK when using native input
* src/gtkutil.c (xg_filter_key): Set correct event type for key
release events.
* src/xterm.c (x_filter_event): Also filter release events.
---
src/gtkutil.c | 7 ++++++-
src/xterm.c | 6 ++++--
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 7f635f8fe2..36ed55bc03 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -6262,7 +6262,12 @@ xg_widget_key_press_event_cb (GtkWidget *widget,
GdkEvent *event,
bool
xg_filter_key (struct frame *frame, XEvent *xkey)
{
- GdkEvent *xg_event = gdk_event_new (GDK_KEY_PRESS);
+ GdkEvent *xg_event = gdk_event_new ((xkey->type == ButtonPress
+#ifdef HAVE_XINPUT2
+ || (xkey->type == GenericEvent
+ && xkey->xgeneric.evtype ==
XI_KeyPress)
+#endif
+ ) ? GDK_KEY_PRESS : GDK_KEY_RELEASE);
GdkDisplay *dpy = gtk_widget_get_display (FRAME_GTK_WIDGET (frame));
GdkKeymap *keymap = gdk_keymap_get_for_display (dpy);
GdkModifierType consumed;
diff --git a/src/xterm.c b/src/xterm.c
index 058c1dccc2..34097ebfd9 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -8284,8 +8284,10 @@ x_filter_event (struct x_display_info *dpyinfo, XEvent
*event)
&& event->type == GenericEvent
&& (event->xgeneric.extension
== dpyinfo->xi2_opcode)
- && (event->xgeneric.evtype
- == XI_KeyPress))
+ && ((event->xgeneric.evtype
+ == XI_KeyPress)
+ || (event->xgeneric.evtype
+ == XI_KeyRelease)))
{
f1 = x_any_window_to_frame (dpyinfo,
((XIDeviceEvent *)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 626c1dce02: Filter key release events through GTK when using native input,
Po Lu <=