[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 07ee24d83d: Fix event source attribution for GTK input methods
From: |
Po Lu |
Subject: |
master 07ee24d83d: Fix event source attribution for GTK input methods |
Date: |
Mon, 11 Apr 2022 07:28:00 -0400 (EDT) |
branch: master
commit 07ee24d83debfeb0570a596fa27e7203bf55a4b3
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Fix event source attribution for GTK input methods
* src/gtkutil.c (xg_im_context_commit): Use pending keystroke
source if it exists.
---
src/gtkutil.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 4fc0edf8ac..718da171f4 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -6274,6 +6274,10 @@ xg_im_context_commit (GtkIMContext *imc, gchar *str,
{
struct frame *f = user_data;
struct input_event ie;
+#ifdef HAVE_XINPUT2
+ struct xi_device_t *source;
+ struct x_display_info *dpyinfo;
+#endif
EVENT_INIT (ie);
/* This used to use g_utf8_to_ucs4_fast, which led to bad results
@@ -6292,6 +6296,22 @@ xg_im_context_commit (GtkIMContext *imc, gchar *str,
make_fixnum (SCHARS (ie.arg)),
Qcoding, Qt, ie.arg);
+#ifdef HAVE_XINPUT2
+ dpyinfo = FRAME_DISPLAY_INFO (f);
+
+ /* There is no timestamp associated with commit events, so use the
+ device that sent the last event to be filtered. */
+ if (dpyinfo->pending_keystroke_time)
+ {
+ dpyinfo->pending_keystroke_time = 0;
+ source = xi_device_from_id (dpyinfo,
+ dpyinfo->pending_keystroke_source);
+
+ if (source)
+ ie.device = source->name;
+ }
+#endif
+
XSETFRAME (ie.frame_or_window, f);
ie.modifiers = 0;
ie.timestamp = 0;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 07ee24d83d: Fix event source attribution for GTK input methods,
Po Lu <=