tk/Further-patch-from-Christian-Werner-on-the-observati.patch

39 lines
1.2 KiB
Diff
Raw Normal View History

2019-09-30 11:18:32 -04:00
From 537e7f8ae810343e6d6685e97492c5881298bd7d Mon Sep 17 00:00:00 2001
From: fvogel <fvogelnew1@free.fr>
Date: Thu, 3 May 2018 06:12:45 +0000
Subject: [PATCH 222/693] Further patch from Christian Werner, on the
observation that on Fedora 28 Workstation on x86_64 XKeyEvents generated by
input methods have the keycode field set to 0 which fails the range check and
thus doesn't get processed further
---
unix/tkUnixKey.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/unix/tkUnixKey.c b/unix/tkUnixKey.c
index d8aa5abe6..c5a024fe6 100644
--- a/unix/tkUnixKey.c
+++ b/unix/tkUnixKey.c
@@ -146,9 +146,15 @@ TkpGetString(
XDisplayKeycodes(winPtr->dispPtr->display, &mincode, &maxcode);
if ((eventPtr->xkey.keycode < mincode) ||
(eventPtr->xkey.keycode > maxcode)) {
- len = 0;
- Tcl_DStringSetLength(dsPtr, len);
- goto done;
+ if (eventPtr->xkey.keycode != 0) {
+ len = 0;
+ Tcl_DStringSetLength(dsPtr, len);
+ goto done;
+ }
+ /*
+ * Keycode 0 seems to come from e.g. ibus input methods,
+ * we let this pass and hope for the best.
+ */
}
#ifdef TK_USE_INPUT_METHODS
--
2.19.1