From 1471a61993d29e9ba8a9c02e8a6bce1f6684bf1c Mon Sep 17 00:00:00 2001 From: Dorota Czaplejewicz Date: Tue, 13 Aug 2019 18:15:17 +0000 Subject: [PATCH] locking: Set lock directly on the button --- eek/eek-key.c | 69 ++------------------------------------------- eek/eek-key.h | 7 ++--- eek/eek-keyboard.c | 70 ++++------------------------------------------ eek/eek-section.c | 70 +++------------------------------------------- 4 files changed, 15 insertions(+), 201 deletions(-) diff --git a/eek/eek-key.c b/eek/eek-key.c index 0b4b6e3c..f94baca3 100644 --- a/eek/eek-key.c +++ b/eek/eek-key.c @@ -42,14 +42,6 @@ enum { PROP_LAST }; -enum { - LOCKED, - UNLOCKED, - LAST_SIGNAL -}; - -static guint signals[LAST_SIGNAL] = { 0, }; - typedef struct _EekKeyPrivate { gulong oref; // UI outline reference @@ -59,26 +51,11 @@ typedef struct _EekKeyPrivate G_DEFINE_TYPE_WITH_PRIVATE (EekKey, eek_key, EEK_TYPE_ELEMENT) -static void -eek_key_real_locked (EekKey *self) +void +eek_key_set_locked (EekKey *self, gboolean value) { EekKeyPrivate *priv = eek_key_get_instance_private (self); - - priv->is_locked = TRUE; -#if DEBUG - g_debug ("locked %X", eek_key_get_keycode (self)); -#endif -} - -static void -eek_key_real_unlocked (EekKey *self) -{ - EekKeyPrivate *priv = eek_key_get_instance_private (self); - - priv->is_locked = FALSE; -#if DEBUG - g_debug ("unlocked %X", eek_key_get_keycode (self)); -#endif + priv->is_locked = value; } static void @@ -134,10 +111,6 @@ eek_key_class_init (EekKeyClass *klass) gobject_class->get_property = eek_key_get_property; gobject_class->finalize = eek_key_finalize; - /* signals */ - klass->locked = eek_key_real_locked; - klass->unlocked = eek_key_real_unlocked; - /** * EekKey:oref: * @@ -149,42 +122,6 @@ eek_key_class_init (EekKeyClass *klass) 0, G_MAXULONG, 0, G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_OREF, pspec); - - /** - * EekKey::locked: - * @key: an #EekKey - * - * The ::locked signal is emitted each time @key is shifted to - * the locked state. The class handler runs before signal - * handlers to allow signal handlers to read the status of @key - * with eek_key_is_locked(). - */ - signals[LOCKED] = - g_signal_new (I_("locked"), - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(EekKeyClass, locked), - NULL, - NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - /** - * EekKey::unlocked: - * @key: an #EekKey - * - * The ::unlocked signal is emitted each time @key is shifted to - * the unlocked state. - */ - signals[UNLOCKED] = - g_signal_new (I_("unlocked"), - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(EekKeyClass, unlocked), - NULL, - NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); } static void diff --git a/eek/eek-key.h b/eek/eek-key.h index a6699333..f0f4498d 100644 --- a/eek/eek-key.h +++ b/eek/eek-key.h @@ -46,11 +46,6 @@ struct _EekKeyClass { /*< private >*/ EekElementClass parent_class; - - /*< public >*/ - /* signals */ - void (* locked) (EekKey *key); - void (* unlocked) (EekKey *key); }; GType eek_key_get_type (void) G_GNUC_CONST; @@ -71,6 +66,8 @@ gboolean eek_key_is_pressed (EekKey *key); gboolean eek_key_is_locked (EekKey *key); void eek_key_set_pressed (EekKey *key, gboolean value); +void +eek_key_set_locked (EekKey *self, gboolean value); void eek_key_share_state(EekKey *self, struct squeek_key *state); G_END_DECLS #endif /* EEK_KEY_H */ diff --git a/eek/eek-keyboard.c b/eek/eek-keyboard.c index b5ec5e7b..f1037e0b 100644 --- a/eek/eek-keyboard.c +++ b/eek/eek-keyboard.c @@ -87,22 +87,6 @@ eek_modifier_key_free (EekModifierKey *modkey) g_slice_free (EekModifierKey, modkey); } -static void -on_key_locked (EekSection *section, - EekKey *key, - EekKeyboard *keyboard) -{ - g_signal_emit (keyboard, signals[KEY_LOCKED], 0, key); -} - -static void -on_key_unlocked (EekSection *section, - EekKey *key, - EekKeyboard *keyboard) -{ - g_signal_emit (keyboard, signals[KEY_UNLOCKED], 0, key); -} - EekSection * eek_keyboard_real_create_section (EekKeyboard *self) { @@ -160,7 +144,7 @@ set_key_states (LevelKeyboard *keyboard, modifier_key->key = g_object_ref (key); keyboard->locked_keys = g_list_prepend (keyboard->locked_keys, modifier_key); - g_signal_emit_by_name (modifier_key->key, "locked"); + eek_key_set_locked(modifier_key->key, true); } if (keyboard->level == 1) { @@ -170,7 +154,7 @@ set_key_states (LevelKeyboard *keyboard, GList *next = g_list_next (head); keyboard->locked_keys = g_list_remove_link (keyboard->locked_keys, head); - g_signal_emit_by_name (modifier_key->key, "unlocked"); + eek_key_set_locked(modifier_key->key, false); g_list_free1 (head); head = next; } @@ -285,18 +269,16 @@ static void eek_keyboard_real_child_added (EekContainer *self, EekElement *element) { - g_signal_connect (element, "key-locked", - G_CALLBACK(on_key_locked), self); - g_signal_connect (element, "key-unlocked", - G_CALLBACK(on_key_unlocked), self); + (void)self; + (void)element; } static void eek_keyboard_real_child_removed (EekContainer *self, EekElement *element) { - g_signal_handlers_disconnect_by_func (element, on_key_locked, self); - g_signal_handlers_disconnect_by_func (element, on_key_unlocked, self); + (void)self; + (void)element; } static void @@ -313,46 +295,6 @@ eek_keyboard_class_init (EekKeyboardClass *klass) gobject_class->set_property = eek_keyboard_set_property; gobject_class->dispose = eek_keyboard_dispose; gobject_class->finalize = eek_keyboard_finalize; - - /** - * EekKeyboard::key-locked: - * @keyboard: an #EekKeyboard - * @key: an #EekKey - * - * The ::key-locked signal is emitted each time a key in @keyboard - * is shifted to the locked state. - */ - signals[KEY_LOCKED] = - g_signal_new (I_("key-locked"), - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(EekKeyboardClass, key_locked), - NULL, - NULL, - g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, - 1, - EEK_TYPE_KEY); - - /** - * EekKeyboard::key-unlocked: - * @keyboard: an #EekKeyboard - * @key: an #EekKey - * - * The ::key-unlocked signal is emitted each time a key in @keyboard - * is shifted to the unlocked state. - */ - signals[KEY_UNLOCKED] = - g_signal_new (I_("key-unlocked"), - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(EekKeyboardClass, key_unlocked), - NULL, - NULL, - g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, - 1, - EEK_TYPE_KEY); } static void diff --git a/eek/eek-section.c b/eek/eek-section.c index ee12f48b..bb029386 100644 --- a/eek/eek-section.c +++ b/eek/eek-section.c @@ -42,14 +42,6 @@ enum { PROP_LAST }; -enum { - KEY_LOCKED, - KEY_UNLOCKED, - LAST_SIGNAL -}; - -static guint signals[LAST_SIGNAL] = { 0, }; - struct _EekRow { gint num_columns; @@ -104,20 +96,6 @@ eek_section_real_get_row (EekSection *self, } } -static void -on_locked (EekKey *key, - EekSection *section) -{ - g_signal_emit (section, signals[KEY_LOCKED], 0, key); -} - -static void -on_unlocked (EekKey *key, - EekSection *section) -{ - g_signal_emit (section, signals[KEY_UNLOCKED], 0, key); -} - static EekKey * eek_section_real_create_key (EekSection *self, const gchar *name, @@ -204,16 +182,16 @@ static void eek_section_real_child_added (EekContainer *self, EekElement *element) { - g_signal_connect (element, "locked", G_CALLBACK(on_locked), self); - g_signal_connect (element, "unlocked", G_CALLBACK(on_unlocked), self); + (void)self; + (void)element; } static void eek_section_real_child_removed (EekContainer *self, EekElement *element) { - g_signal_handlers_disconnect_by_func (element, on_locked, self); - g_signal_handlers_disconnect_by_func (element, on_unlocked, self); + (void)self; + (void)element; } static void @@ -249,46 +227,6 @@ eek_section_class_init (EekSectionClass *klass) g_object_class_install_property (gobject_class, PROP_ANGLE, pspec); - - /** - * EekSection::key-locked: - * @section: an #EekSection - * @key: an #EekKey - * - * The ::key-locked signal is emitted each time a key in @section - * is shifted to the locked state. - */ - signals[KEY_LOCKED] = - g_signal_new (I_("key-locked"), - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(EekSectionClass, key_locked), - NULL, - NULL, - g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, - 1, - EEK_TYPE_KEY); - - /** - * EekSection::key-unlocked: - * @section: an #EekSection - * @key: an #EekKey - * - * The ::key-unlocked signal is emitted each time a key in @section - * is shifted to the unlocked state. - */ - signals[KEY_UNLOCKED] = - g_signal_new (I_("key-unlocked"), - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(EekSectionClass, key_unlocked), - NULL, - NULL, - g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, - 1, - EEK_TYPE_KEY); } static void