From 73e4335c58ad8a475381dd4e585c55f4615e4d19 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Tue, 11 Jan 2022 18:06:37 +0800 Subject: [PATCH] Stop decoding GTK event strings when using native input * src/gtkutil.c (xg_widget_key_press_event_cb): Stop decoding event strings. --- src/gtkutil.c | 42 +++++++++--------------------------------- 1 file 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, union buffered_input_event inev; guint keysym = event->key.keyval; unsigned int xstate; - gunichar *cb; - ptrdiff_t i; - glong len; gunichar uc; FOR_EACH_FRAME (tail, tem) @@ -6235,40 +6232,19 @@ xg_widget_key_press_event_cb (GtkWidget *widget, GdkEvent *event, goto done; } - if (event->key.string) - { - cb = g_utf8_to_ucs4_fast (event->key.string, -1, &len); - - for (i = 0; i < len; ++i) - { - inev.ie.kind = (SINGLE_BYTE_CHAR_P (cb[i]) - ? ASCII_KEYSTROKE_EVENT - : MULTIBYTE_CHAR_KEYSTROKE_EVENT); - inev.ie.code = cb[i]; - - kbd_buffer_store_buffered_event (&inev, &xg_pending_quit_event); - } - - g_free (cb); + uc = gdk_keyval_to_unicode (keysym); - inev.ie.kind = NO_EVENT; + if (uc) + { + inev.ie.kind = (SINGLE_BYTE_CHAR_P (uc) + ? ASCII_KEYSTROKE_EVENT + : MULTIBYTE_CHAR_KEYSTROKE_EVENT); + inev.ie.code = uc; } else { - uc = gdk_keyval_to_unicode (keysym); - - if (uc) - { - inev.ie.kind = (SINGLE_BYTE_CHAR_P (uc) - ? ASCII_KEYSTROKE_EVENT - : MULTIBYTE_CHAR_KEYSTROKE_EVENT); - inev.ie.code = uc; - } - else - { - inev.ie.kind = NON_ASCII_KEYSTROKE_EVENT; - inev.ie.code = keysym; - } + inev.ie.kind = NON_ASCII_KEYSTROKE_EVENT; + inev.ie.code = keysym; } done: -- 2.39.5