libeek: make GTK key event handling robuster.

This commit is contained in:
Daiki Ueno
2010-08-11 17:45:52 +09:00
parent 8bc7b754bc
commit 70f3bc5308

View File

@ -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)