libeek: make GTK key event handling robuster.
This commit is contained in:
@ -438,21 +438,20 @@ on_key_released (EekKey *key, gpointer user_data)
|
|||||||
EekGtkKeyboard *keyboard = user_data;
|
EekGtkKeyboard *keyboard = user_data;
|
||||||
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(keyboard);
|
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(keyboard);
|
||||||
|
|
||||||
if (priv->key)
|
if (priv->key) {
|
||||||
key_shrink (EEK_GTK_KEYBOARD(keyboard), EEK_KEY(priv->key));
|
key_shrink (EEK_GTK_KEYBOARD(keyboard), EEK_KEY(priv->key));
|
||||||
priv->key = NULL;
|
priv->key = NULL;
|
||||||
}
|
}
|
||||||
|
key_shrink (EEK_GTK_KEYBOARD(keyboard), key);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
press_key (EekGtkKeyboard *keyboard, EekKey *key)
|
press_key (EekGtkKeyboard *keyboard, EekKey *key)
|
||||||
{
|
{
|
||||||
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(keyboard);
|
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(keyboard);
|
||||||
if (priv->key != key) {
|
if (priv->key != key)
|
||||||
if (priv->key)
|
|
||||||
g_signal_emit_by_name (priv->key, "released", keyboard);
|
|
||||||
g_signal_emit_by_name (key, "pressed", keyboard);
|
g_signal_emit_by_name (key, "pressed", keyboard);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
release_key (EekGtkKeyboard *keyboard)
|
release_key (EekGtkKeyboard *keyboard)
|
||||||
|
|||||||
Reference in New Issue
Block a user