mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-27 14:10:30 +00:00
imcontext: Eat key events during preedit
Avoid passing through random key press or release events while we are showing preedit. That prevents 'accidents' like typing Ctrl-. bringing up the Emoji chooser during preedit, or hitting Ctrl-a after the Compose key moving the 'dot' around in vim in terminals.
This commit is contained in:
parent
9b7f927b3c
commit
20fb64704d
@ -761,13 +761,21 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
|
||||
}
|
||||
}
|
||||
|
||||
if (priv->in_hex_sequence || priv->in_compose_sequence)
|
||||
return TRUE; /* Don't leak random key events during preedit */
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Ignore modifier key presses */
|
||||
for (i = 0; i < G_N_ELEMENTS (gtk_compose_ignore); i++)
|
||||
if (keyval == gtk_compose_ignore[i])
|
||||
return FALSE;
|
||||
{
|
||||
if (priv->in_hex_sequence || priv->in_compose_sequence)
|
||||
return TRUE; /* Don't leak random key events during preedit */
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
hex_mod_mask = GDK_CONTROL_MASK|GDK_SHIFT_MASK;
|
||||
|
||||
@ -802,16 +810,23 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
|
||||
|
||||
no_text_input_mask = GDK_ALT_MASK|GDK_CONTROL_MASK;
|
||||
|
||||
if (state & no_text_input_mask ||
|
||||
(priv->in_hex_sequence && priv->modifiers_dropped &&
|
||||
(keyval == GDK_KEY_Return ||
|
||||
keyval == GDK_KEY_ISO_Enter ||
|
||||
keyval == GDK_KEY_KP_Enter)))
|
||||
if (priv->in_hex_sequence && priv->modifiers_dropped &&
|
||||
(keyval == GDK_KEY_Return ||
|
||||
keyval == GDK_KEY_ISO_Enter ||
|
||||
keyval == GDK_KEY_KP_Enter))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (state & no_text_input_mask)
|
||||
{
|
||||
if (priv->in_hex_sequence || priv->in_compose_sequence)
|
||||
return TRUE; /* Don't leak random key events during preedit */
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Handle backspace */
|
||||
if (priv->in_hex_sequence && have_hex_mods && is_backspace)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user