aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2022-01-11 18:06:37 +0800
committerPo Lu2022-01-11 18:06:37 +0800
commit73e4335c58ad8a475381dd4e585c55f4615e4d19 (patch)
tree2cd24ce43f16601f9be9e05b62d454a2b01cc675 /src
parent0b0a8dab6817a974eb8d7baf18efe9fb5dc99c2b (diff)
downloademacs-73e4335c58ad8a475381dd4e585c55f4615e4d19.tar.gz
emacs-73e4335c58ad8a475381dd4e585c55f4615e4d19.zip
Stop decoding GTK event strings when using native input
* src/gtkutil.c (xg_widget_key_press_event_cb): Stop decoding event strings.
Diffstat (limited to 'src')
-rw-r--r--src/gtkutil.c42
1 files changed, 9 insertions, 33 deletions
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 8eab6ee723d..3550a56e299 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -6123,9 +6123,6 @@ xg_widget_key_press_event_cb (GtkWidget *widget, GdkEvent *event,
6123 union buffered_input_event inev; 6123 union buffered_input_event inev;
6124 guint keysym = event->key.keyval; 6124 guint keysym = event->key.keyval;
6125 unsigned int xstate; 6125 unsigned int xstate;
6126 gunichar *cb;
6127 ptrdiff_t i;
6128 glong len;
6129 gunichar uc; 6126 gunichar uc;
6130 6127
6131 FOR_EACH_FRAME (tail, tem) 6128 FOR_EACH_FRAME (tail, tem)
@@ -6235,40 +6232,19 @@ xg_widget_key_press_event_cb (GtkWidget *widget, GdkEvent *event,
6235 goto done; 6232 goto done;
6236 } 6233 }
6237 6234
6238 if (event->key.string) 6235 uc = gdk_keyval_to_unicode (keysym);
6239 {
6240 cb = g_utf8_to_ucs4_fast (event->key.string, -1, &len);
6241
6242 for (i = 0; i < len; ++i)
6243 {
6244 inev.ie.kind = (SINGLE_BYTE_CHAR_P (cb[i])
6245 ? ASCII_KEYSTROKE_EVENT
6246 : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
6247 inev.ie.code = cb[i];
6248
6249 kbd_buffer_store_buffered_event (&inev, &xg_pending_quit_event);
6250 }
6251
6252 g_free (cb);
6253 6236
6254 inev.ie.kind = NO_EVENT; 6237 if (uc)
6238 {
6239 inev.ie.kind = (SINGLE_BYTE_CHAR_P (uc)
6240 ? ASCII_KEYSTROKE_EVENT
6241 : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
6242 inev.ie.code = uc;
6255 } 6243 }
6256 else 6244 else
6257 { 6245 {
6258 uc = gdk_keyval_to_unicode (keysym); 6246 inev.ie.kind = NON_ASCII_KEYSTROKE_EVENT;
6259 6247 inev.ie.code = keysym;
6260 if (uc)
6261 {
6262 inev.ie.kind = (SINGLE_BYTE_CHAR_P (uc)
6263 ? ASCII_KEYSTROKE_EVENT
6264 : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
6265 inev.ie.code = uc;
6266 }
6267 else
6268 {
6269 inev.ie.kind = NON_ASCII_KEYSTROKE_EVENT;
6270 inev.ie.code = keysym;
6271 }
6272 } 6248 }
6273 6249
6274 done: 6250 done: