Merge branch 'fixes' into 'master'
Fixes See merge request Librem5/squeekboard!74
This commit is contained in:
@ -57,9 +57,6 @@ typedef struct _EekGtkKeyboardPrivate
|
|||||||
{
|
{
|
||||||
EekRenderer *renderer;
|
EekRenderer *renderer;
|
||||||
EekKeyboard *keyboard;
|
EekKeyboard *keyboard;
|
||||||
gulong key_locked_handler;
|
|
||||||
gulong key_unlocked_handler;
|
|
||||||
gulong symbol_index_changed_handler;
|
|
||||||
EekTheme *theme;
|
EekTheme *theme;
|
||||||
|
|
||||||
GdkEventSequence *sequence; // unowned reference
|
GdkEventSequence *sequence; // unowned reference
|
||||||
@ -330,17 +327,23 @@ eek_gtk_keyboard_set_keyboard (EekGtkKeyboard *self,
|
|||||||
EekKeyboard *keyboard)
|
EekKeyboard *keyboard)
|
||||||
{
|
{
|
||||||
EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
|
EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
|
||||||
|
|
||||||
|
if (priv->keyboard == keyboard)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (priv->keyboard) {
|
||||||
|
g_signal_handlers_disconnect_by_data(priv->keyboard, self);
|
||||||
|
g_object_unref (priv->keyboard);
|
||||||
|
}
|
||||||
|
|
||||||
priv->keyboard = g_object_ref (keyboard);
|
priv->keyboard = g_object_ref (keyboard);
|
||||||
|
|
||||||
priv->key_locked_handler =
|
g_signal_connect (priv->keyboard, "key-locked",
|
||||||
g_signal_connect (priv->keyboard, "key-locked",
|
G_CALLBACK(on_key_locked), self);
|
||||||
G_CALLBACK(on_key_locked), self);
|
g_signal_connect (priv->keyboard, "key-unlocked",
|
||||||
priv->key_unlocked_handler =
|
G_CALLBACK(on_key_unlocked), self);
|
||||||
g_signal_connect (priv->keyboard, "key-unlocked",
|
g_signal_connect (priv->keyboard, "symbol-index-changed",
|
||||||
G_CALLBACK(on_key_unlocked), self);
|
G_CALLBACK(on_symbol_index_changed), self);
|
||||||
priv->symbol_index_changed_handler =
|
|
||||||
g_signal_connect (priv->keyboard, "symbol-index-changed",
|
|
||||||
G_CALLBACK(on_symbol_index_changed), self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -374,21 +377,9 @@ eek_gtk_keyboard_dispose (GObject *object)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (priv->keyboard) {
|
if (priv->keyboard) {
|
||||||
if (g_signal_handler_is_connected (priv->keyboard,
|
|
||||||
priv->key_locked_handler))
|
|
||||||
g_signal_handler_disconnect (priv->keyboard,
|
|
||||||
priv->key_locked_handler);
|
|
||||||
if (g_signal_handler_is_connected (priv->keyboard,
|
|
||||||
priv->key_unlocked_handler))
|
|
||||||
g_signal_handler_disconnect (priv->keyboard,
|
|
||||||
priv->key_unlocked_handler);
|
|
||||||
if (g_signal_handler_is_connected (priv->keyboard,
|
|
||||||
priv->symbol_index_changed_handler))
|
|
||||||
g_signal_handler_disconnect (priv->keyboard,
|
|
||||||
priv->symbol_index_changed_handler);
|
|
||||||
|
|
||||||
GList *list, *head;
|
GList *list, *head;
|
||||||
|
|
||||||
|
g_signal_handlers_disconnect_by_data(priv->keyboard, self);
|
||||||
list = eek_keyboard_get_pressed_keys (priv->keyboard);
|
list = eek_keyboard_get_pressed_keys (priv->keyboard);
|
||||||
for (head = list; head; head = g_list_next (head)) {
|
for (head = list; head; head = g_list_next (head)) {
|
||||||
g_log("squeek", G_LOG_LEVEL_DEBUG, "emit EekKey pressed");
|
g_log("squeek", G_LOG_LEVEL_DEBUG, "emit EekKey pressed");
|
||||||
|
|||||||
Reference in New Issue
Block a user