diff --git a/eek/eek-element.c b/eek/eek-element.c index a830729b..f9b6f3ae 100644 --- a/eek/eek-element.c +++ b/eek/eek-element.c @@ -38,8 +38,6 @@ enum { PROP_0, PROP_NAME, PROP_BOUNDS, - PROP_GROUP, - PROP_LEVEL, PROP_LAST }; @@ -55,20 +53,10 @@ typedef struct _EekElementPrivate gchar *name; EekBounds bounds; EekElement *parent; - gint group; - gint level; } EekElementPrivate; G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (EekElement, eek_element, G_TYPE_OBJECT) -static void -eek_element_real_symbol_index_changed (EekElement *self, - gint group, - gint level) -{ - // g_debug ("symbol-index-changed"); -} - static void eek_element_finalize (GObject *object) { @@ -95,12 +83,6 @@ eek_element_set_property (GObject *object, case PROP_BOUNDS: eek_element_set_bounds (element, g_value_get_boxed (value)); break; - case PROP_GROUP: - eek_element_set_group (element, g_value_get_int (value)); - break; - case PROP_LEVEL: - eek_element_set_level (element, g_value_get_int (value)); - break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -124,12 +106,6 @@ eek_element_get_property (GObject *object, eek_element_get_bounds (element, &bounds); g_value_set_boxed (value, &bounds); break; - case PROP_GROUP: - g_value_set_int (value, eek_element_get_group (element)); - break; - case PROP_LEVEL: - g_value_set_int (value, eek_element_get_level (element)); - break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -143,8 +119,6 @@ eek_element_class_init (EekElementClass *klass) GParamSpec *pspec; /* signals */ - klass->symbol_index_changed = eek_element_real_symbol_index_changed; - gobject_class->set_property = eek_element_set_property; gobject_class->get_property = eek_element_get_property; gobject_class->finalize = eek_element_finalize; @@ -176,65 +150,12 @@ eek_element_class_init (EekElementClass *klass) g_object_class_install_property (gobject_class, PROP_BOUNDS, pspec); - - /** - * EekElement:group: - * - * The group value of the symbol index of #EekElement. - */ - pspec = g_param_spec_int ("group", - "Group", - "Group value of the symbol index", - -1, G_MAXINT, -1, - G_PARAM_READWRITE); - g_object_class_install_property (gobject_class, - PROP_GROUP, - pspec); - - /** - * EekElement:level: - * - * The level value of the symbol index of #EekElement. - */ - pspec = g_param_spec_int ("level", - "Level", - "Level value of the symbol index", - -1, G_MAXINT, -1, - G_PARAM_READWRITE); - g_object_class_install_property (gobject_class, - PROP_LEVEL, - pspec); - - /** - * EekElement::symbol-index-changed: - * @element: an #EekElement - * @group: row index of the symbol matrix of keys on @element - * @level: column index of the symbol matrix of keys on @element - * - * The ::symbol-index-changed signal is emitted each time the - * global configuration of group/level index changes. - */ - signals[SYMBOL_INDEX_CHANGED] = - g_signal_new (I_("symbol-index-changed"), - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(EekElementClass, symbol_index_changed), - NULL, - NULL, - _eek_marshal_VOID__INT_INT, - G_TYPE_NONE, - 2, - G_TYPE_INT, - G_TYPE_INT); } static void eek_element_init (EekElement *self) { - EekElementPrivate *priv = eek_element_get_instance_private (self); - - priv->group = -1; - priv->level = -1; + (void)self; } /** @@ -428,144 +349,3 @@ eek_element_set_size (EekElement *element, bounds.height = height; eek_element_set_bounds (element, &bounds); } - -/** - * eek_element_set_symbol_index: - * @element: an #EekElement - * @group: row index of the symbol matrix - * @level: column index of the symbol matrix - * - * Set the default index of the symbol matrices of @element. The - * setting affects the child, if child does not have the index set, as - * well as this element. To unset, pass -1 as group/level. - */ -void -eek_element_set_symbol_index (EekElement *element, - gint group, - gint level) -{ - gboolean emit_signal; - - g_return_if_fail (EEK_IS_ELEMENT(element)); - - emit_signal = group != eek_element_get_group (element) || - level != eek_element_get_level (element); - - eek_element_set_group (element, group); - eek_element_set_level (element, level); - - if (emit_signal) - g_signal_emit (element, signals[SYMBOL_INDEX_CHANGED], 0, group, level); -} - -/** - * eek_element_get_symbol_index: - * @element: an #EekElement - * @group: a pointer where the group value of the symbol index will be stored - * @level: a pointer where the level value of the symbol index will be stored - * - * Get the default index of the symbol matrices of @element. - * If the index is not set, -1 will be returned. - */ -void -eek_element_get_symbol_index (EekElement *element, - gint *group, - gint *level) -{ - g_return_if_fail (EEK_IS_ELEMENT(element)); - g_return_if_fail (group != NULL || level != NULL); - if (group != NULL) - *group = eek_element_get_group (element); - if (level != NULL) - *level = eek_element_get_level (element); -} - -/** - * eek_element_set_group: - * @element: an #EekElement - * @group: group index of @element - * - * Set the group value of the default symbol index of @element. To - * unset, pass -1 as @group. - * - * See also: eek_element_set_symbol_index() - */ -void -eek_element_set_group (EekElement *element, - gint group) -{ - g_return_if_fail (EEK_IS_ELEMENT(element)); - - EekElementPrivate *priv = eek_element_get_instance_private (element); - - if (priv->group != group) { - priv->group = group; - g_object_notify (G_OBJECT(element), "group"); - g_signal_emit (element, signals[SYMBOL_INDEX_CHANGED], 0, - group, priv->level); - } -} - -/** - * eek_element_set_level: - * @element: an #EekElement - * @level: level index of @element - * - * Set the level value of the default symbol index of @element. To - * unset, pass -1 as @level. - * - * See also: eek_element_set_symbol_index() - */ -void -eek_element_set_level (EekElement *element, - gint level) -{ - g_return_if_fail (EEK_IS_ELEMENT(element)); - - EekElementPrivate *priv = eek_element_get_instance_private (element); - - if (priv->level != level) { - priv->level = level; - g_object_notify (G_OBJECT(element), "level"); - g_signal_emit (element, signals[SYMBOL_INDEX_CHANGED], 0, - priv->group, level); - } -} - -/** - * eek_element_get_group: - * @element: an #EekElement - * - * Return the group value of the default symbol index of @element. - * If the value is not set, -1 will be returned. - * - * See also: eek_element_get_symbol_index() - */ -gint -eek_element_get_group (EekElement *element) -{ - g_return_val_if_fail (EEK_IS_ELEMENT(element), -1); - - EekElementPrivate *priv = eek_element_get_instance_private (element); - - return priv->group; -} - -/** - * eek_element_get_level: - * @element: an #EekElement - * - * Return the level value of the default symbol index of @element. - * If the value is not set, -1 will be returned. - * - * See also: eek_element_get_symbol_index() - */ -gint -eek_element_get_level (EekElement *element) -{ - g_return_val_if_fail (EEK_IS_ELEMENT(element), -1); - - EekElementPrivate *priv = eek_element_get_instance_private (element); - - return priv->level; -} diff --git a/eek/eek-element.h b/eek/eek-element.h index 084d7b5f..12d19fdd 100644 --- a/eek/eek-element.h +++ b/eek/eek-element.h @@ -36,11 +36,6 @@ struct _EekElementClass { /*< private >*/ GObjectClass parent_class; - - /* signals */ - void (* symbol_index_changed) (EekElement *self, - gint group, - gint level); }; GType eek_element_get_type (void) G_GNUC_CONST; @@ -70,18 +65,5 @@ void eek_element_get_absolute_position (EekElement *element, gdouble *x, gdouble *y); -void eek_element_set_symbol_index (EekElement *element, - gint group, - gint level); -void eek_element_get_symbol_index (EekElement *element, - gint *group, - gint *level); -void eek_element_set_group (EekElement *element, - gint group); -void eek_element_set_level (EekElement *element, - gint level); -gint eek_element_get_group (EekElement *element); -gint eek_element_get_level (EekElement *element); - G_END_DECLS #endif /* EEK_ELEMENT_H */ diff --git a/eek/eek-gtk-keyboard.c b/eek/eek-gtk-keyboard.c index e4e4442e..5bc947da 100644 --- a/eek/eek-gtk-keyboard.c +++ b/eek/eek-gtk-keyboard.c @@ -113,7 +113,7 @@ eek_gtk_keyboard_real_draw (GtkWidget *self, eek_renderer_render_keyboard (priv->renderer, cr); - uint level = eek_element_get_level(EEK_ELEMENT(priv->keyboard)); + uint level = priv->keyboard->level; /* redraw pressed key */ list = eek_keyboard_get_pressed_keys (priv->keyboard); @@ -156,7 +156,7 @@ static void depress(EekGtkKeyboard *self, if (key) { eek_keyboard_press_key(priv->keyboard, key, time); - guint level = eek_element_get_level(EEK_ELEMENT(priv->keyboard)); + guint level = priv->keyboard->level; on_key_pressed(key, self, level); } } @@ -184,7 +184,7 @@ static void drag(EekGtkKeyboard *self, if (!found) { eek_keyboard_press_key(priv->keyboard, key, time); - guint level = eek_element_get_level(EEK_ELEMENT(priv->keyboard)); + guint level = priv->keyboard->level; on_key_pressed(key, self, level); } } else { @@ -313,7 +313,7 @@ eek_gtk_keyboard_real_query_tooltip (GtkWidget *widget, (gdouble)x, (gdouble)y); if (key) { - EekSymbol *symbol = eek_key_get_symbol (key); + EekSymbol *symbol = eek_key_get_symbol_at_index(key, 0, priv->keyboard->level); const gchar *text = eek_symbol_get_tooltip (symbol); if (text) { gtk_tooltip_set_text (tooltip, text); diff --git a/eek/eek-key.c b/eek/eek-key.c index ea52e462..d3128666 100644 --- a/eek/eek-key.c +++ b/eek/eek-key.c @@ -269,73 +269,6 @@ eek_key_get_symbol_matrix (EekKey *key) return priv->symbols; } -/** - * eek_key_get_symbol: - * @key: an #EekKey - * - * Get the current symbol of @key. - * Return value: (transfer none): the current #EekSymbol or %NULL on failure - */ -EekSymbol * -eek_key_get_symbol (EekKey *key) -{ - return eek_key_get_symbol_with_fallback (key, 0, 0); -} - -/** - * eek_key_get_symbol_with_fallback: - * @key: an #EekKey - * @fallback_group: fallback group index - * @fallback_level: fallback level index - * - * Get the current symbol of @key. - * Return value: (transfer none): the current #EekSymbol or %NULL on failure - */ -EekSymbol * -eek_key_get_symbol_with_fallback (EekKey *key, - gint fallback_group, - gint fallback_level) -{ - gint group, level; - - g_return_val_if_fail (EEK_IS_KEY (key), NULL); - g_return_val_if_fail (fallback_group >= 0, NULL); - g_return_val_if_fail (fallback_level >= 0, NULL); - - eek_element_get_symbol_index (EEK_ELEMENT(key), &group, &level); - - if (group < 0 || level < 0) { - EekElement *section; - - section = eek_element_get_parent (EEK_ELEMENT(key)); - g_return_val_if_fail (EEK_IS_SECTION (section), NULL); - - if (group < 0) - group = eek_element_get_group (section); - - if (level < 0) - level = eek_element_get_level (section); - - if (group < 0 || level < 0) { - EekElement *keyboard; - - keyboard = eek_element_get_parent (section); - g_return_val_if_fail (EEK_IS_KEYBOARD (keyboard), NULL); - - if (group < 0) - group = eek_element_get_group (keyboard); - if (level < 0) - level = eek_element_get_level (keyboard); - } - } - - return eek_key_get_symbol_at_index (key, - group, - level, - fallback_group, - fallback_level); -} - /** * eek_key_get_symbol_at_index: * @key: an #EekKey @@ -350,14 +283,9 @@ eek_key_get_symbol_with_fallback (EekKey *key, struct squeek_symbol* eek_key_get_symbol_at_index (EekKey *key, gint group, - gint level, - guint fallback_group, - guint fallback_level) + guint level) { struct squeek_symbols *symbols = eek_key_get_symbol_matrix(key); - if (level < 0) { - level = fallback_level; - } return squeek_symbols_get(symbols, level); } diff --git a/eek/eek-key.h b/eek/eek-key.h index 4066da99..799d92bc 100644 --- a/eek/eek-key.h +++ b/eek/eek-key.h @@ -60,16 +60,9 @@ void eek_key_set_keycode (EekKey *key, guint eek_key_get_keycode (EekKey *key); struct squeek_symbols * eek_key_get_symbol_matrix (EekKey *key); -EekSymbol *eek_key_get_symbol (EekKey *key); -EekSymbol *eek_key_get_symbol_with_fallback - (EekKey *key, - gint fallback_group, - gint fallback_level); struct squeek_symbol *eek_key_get_symbol_at_index (EekKey *key, gint group, - gint level, - guint fallback_group, - guint fallback_level); + guint level); void eek_key_set_oref (EekKey *key, guint oref); diff --git a/eek/eek-keyboard.c b/eek/eek-keyboard.c index 77b0c9ed..21658b29 100644 --- a/eek/eek-keyboard.c +++ b/eek/eek-keyboard.c @@ -115,15 +115,6 @@ on_key_unlocked (EekSection *section, g_signal_emit (keyboard, signals[KEY_UNLOCKED], 0, key); } -static void -on_symbol_index_changed (EekSection *section, - gint group, - gint level, - EekKeyboard *keyboard) -{ - g_signal_emit_by_name (keyboard, "symbol-index-changed", group, level); -} - static void section_child_added_cb (EekContainer *container, EekElement *element, @@ -251,7 +242,7 @@ set_level_from_modifiers (EekKeyboard *self, EekKey *key) priv->modifier_behavior = EEK_MODIFIER_BEHAVIOR_LATCH; priv->old_level = level; - eek_element_set_level (EEK_ELEMENT(self), level); + self->level = level; eek_layout_update_layout(self); } @@ -302,7 +293,7 @@ void eek_keyboard_press_key(EekKeyboard *keyboard, EekKey *key, guint32 timestam priv->pressed_keys = g_list_prepend (priv->pressed_keys, key); struct squeek_symbol *symbol = eek_key_get_symbol_at_index( - key, 0, eek_element_get_level (EEK_ELEMENT(keyboard)), 0, 0 + key, 0, keyboard->level ); if (!symbol) return; @@ -335,8 +326,7 @@ void eek_keyboard_release_key( EekKeyboard *keyboard, } struct squeek_symbol *symbol = eek_key_get_symbol_at_index( - key, 0, eek_element_get_level (EEK_ELEMENT(keyboard)), 0, 0 - ); + key, 0, keyboard->level); if (!symbol) return; @@ -404,8 +394,6 @@ eek_keyboard_real_child_added (EekContainer *self, G_CALLBACK(on_key_locked), self); g_signal_connect (element, "key-unlocked", G_CALLBACK(on_key_unlocked), self); - g_signal_connect (element, "symbol-index-changed", - G_CALLBACK(on_symbol_index_changed), self); } static void @@ -495,7 +483,7 @@ eek_keyboard_init (EekKeyboard *self) self->priv->modifier_behavior = EEK_MODIFIER_BEHAVIOR_NONE; self->priv->outline_array = g_array_new (FALSE, TRUE, sizeof (EekOutline)); self->priv->names = g_hash_table_new (g_str_hash, g_str_equal); - eek_element_set_symbol_index (EEK_ELEMENT(self), 0, 0); + self->level = 0; self->scale = 1.0; } diff --git a/eek/eek-keyboard.h b/eek/eek-keyboard.h index 6b9dce5c..31b41dcf 100644 --- a/eek/eek-keyboard.h +++ b/eek/eek-keyboard.h @@ -63,6 +63,7 @@ struct _EekKeyboard int keymap_fd; // keymap formatted as XKB string size_t keymap_len; // length of the data inside keymap_fd double scale; + guint level; EekboardContextService *manager; // unowned reference }; diff --git a/eek/eek-renderer.c b/eek/eek-renderer.c index 1fadc0b7..aff548f0 100644 --- a/eek/eek-renderer.c +++ b/eek/eek-renderer.c @@ -62,7 +62,6 @@ typedef struct _EekRendererPrivate GHashTable *active_outline_surface_cache; GHashTable *icons; cairo_surface_t *keyboard_surface; - gulong symbol_index_changed_handler; } EekRendererPrivate; @@ -178,7 +177,7 @@ render_keyboard_surface (EekRenderer *renderer) foreground.blue, foreground.alpha); - data.level = eek_element_get_level(EEK_ELEMENT(priv->keyboard)); + data.level = priv->keyboard->level; /* draw sections */ eek_container_foreach_child (EEK_CONTAINER(priv->keyboard), create_keyboard_surface_section_callback, @@ -280,7 +279,7 @@ render_key (EekRenderer *self, eek_renderer_get_foreground_color (self, priv->key_context, &foreground); /* render icon (if any) */ - symbol = eek_key_get_symbol_at_index (key, 0, level, 0, 0); + symbol = eek_key_get_symbol_at_index (key, 0, level); if (!symbol) return; @@ -394,7 +393,7 @@ eek_renderer_real_render_key_label (EekRenderer *self, PangoLayoutLine *line; gdouble scale; - symbol = eek_key_get_symbol_at_index(key, 0, level, 0, 0); + symbol = eek_key_get_symbol_at_index(key, 0, level); if (!symbol) return; @@ -531,11 +530,6 @@ eek_renderer_set_property (GObject *object, case PROP_KEYBOARD: priv->keyboard = g_value_get_object (value); g_object_ref (priv->keyboard); - - priv->symbol_index_changed_handler = - g_signal_connect (priv->keyboard, "symbol-index-changed", - G_CALLBACK(on_symbol_index_changed), - object); break; case PROP_PCONTEXT: priv->pcontext = g_value_get_object (value); @@ -577,10 +571,6 @@ eek_renderer_dispose (GObject *object) EekRendererPrivate *priv = eek_renderer_get_instance_private (self); if (priv->keyboard) { - if (g_signal_handler_is_connected (priv->keyboard, - priv->symbol_index_changed_handler)) - g_signal_handler_disconnect (priv->keyboard, - priv->symbol_index_changed_handler); g_object_unref (priv->keyboard); priv->keyboard = NULL; } @@ -679,7 +669,6 @@ eek_renderer_init (EekRenderer *self) NULL, (GDestroyNotify)cairo_surface_destroy); priv->keyboard_surface = NULL; - priv->symbol_index_changed_handler = 0; GtkIconTheme *theme = gtk_icon_theme_get_default (); diff --git a/eek/eek-xml-layout.c b/eek/eek-xml-layout.c index a4439ec2..47ccfa40 100644 --- a/eek/eek-xml-layout.c +++ b/eek/eek-xml-layout.c @@ -733,7 +733,6 @@ symbols_end_element_callback (GMarkupParseContext *pcontext, SymbolsParseData *data = user_data; GSList *head = data->element_stack; gchar *text; - gint i; g_free (head->data); data->element_stack = g_slist_next (data->element_stack); diff --git a/eekboard/key-emitter.c b/eekboard/key-emitter.c index 79dbfa96..4f7dd1d1 100644 --- a/eekboard/key-emitter.c +++ b/eekboard/key-emitter.c @@ -91,7 +91,7 @@ send_fake_key (SeatEmitter *emitter, uint32_t timestamp) { uint32_t proto_modifiers = 0; - guint level = eek_element_get_level(EEK_ELEMENT(keyboard)); + guint level = keyboard->level; uint32_t group = (level / 2); if (keyboard_modifiers & EEK_SHIFT_MASK)