aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2022-01-13 17:56:55 +0800
committerPo Lu2022-01-13 17:56:55 +0800
commit626c1dce02d4f2e8d0822decf8b421eee00674b1 (patch)
treeff1cd256cbd70f7288944a3230251ff5db38578f /src
parent9c31be6dc31f10efcfb8dc76053e8bf3f62eef2c (diff)
downloademacs-626c1dce02d4f2e8d0822decf8b421eee00674b1.tar.gz
emacs-626c1dce02d4f2e8d0822decf8b421eee00674b1.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/gtkutil.c7
-rw-r--r--src/xterm.c6
2 files changed, 10 insertions, 3 deletions
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 7f635f8fe2b..36ed55bc039 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -6262,7 +6262,12 @@ xg_widget_key_press_event_cb (GtkWidget *widget, GdkEvent *event,
6262bool 6262bool
6263xg_filter_key (struct frame *frame, XEvent *xkey) 6263xg_filter_key (struct frame *frame, XEvent *xkey)
6264{ 6264{
6265 GdkEvent *xg_event = gdk_event_new (GDK_KEY_PRESS); 6265 GdkEvent *xg_event = gdk_event_new ((xkey->type == ButtonPress
6266#ifdef HAVE_XINPUT2
6267 || (xkey->type == GenericEvent
6268 && xkey->xgeneric.evtype == XI_KeyPress)
6269#endif
6270 ) ? GDK_KEY_PRESS : GDK_KEY_RELEASE);
6266 GdkDisplay *dpy = gtk_widget_get_display (FRAME_GTK_WIDGET (frame)); 6271 GdkDisplay *dpy = gtk_widget_get_display (FRAME_GTK_WIDGET (frame));
6267 GdkKeymap *keymap = gdk_keymap_get_for_display (dpy); 6272 GdkKeymap *keymap = gdk_keymap_get_for_display (dpy);
6268 GdkModifierType consumed; 6273 GdkModifierType consumed;
diff --git a/src/xterm.c b/src/xterm.c
index 058c1dccc22..34097ebfd94 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -8284,8 +8284,10 @@ x_filter_event (struct x_display_info *dpyinfo, XEvent *event)
8284 && event->type == GenericEvent 8284 && event->type == GenericEvent
8285 && (event->xgeneric.extension 8285 && (event->xgeneric.extension
8286 == dpyinfo->xi2_opcode) 8286 == dpyinfo->xi2_opcode)
8287 && (event->xgeneric.evtype 8287 && ((event->xgeneric.evtype
8288 == XI_KeyPress)) 8288 == XI_KeyPress)
8289 || (event->xgeneric.evtype
8290 == XI_KeyRelease)))
8289 { 8291 {
8290 f1 = x_any_window_to_frame (dpyinfo, 8292 f1 = x_any_window_to_frame (dpyinfo,
8291 ((XIDeviceEvent *) 8293 ((XIDeviceEvent *)