Stop decoding GTK event strings when using native input

* src/gtkutil.c (xg_widget_key_press_event_cb): Stop decoding
event strings.
This commit is contained in:
Po Lu 2022-01-11 18:06:37 +08:00
parent 0b0a8dab68
commit 73e4335c58

View file

@ -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)
uc = gdk_keyval_to_unicode (keysym);
if (uc)
{
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);
inev.ie.kind = NO_EVENT;
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: