From 0c83101b3fb9847275c1653530823696525f5090 Mon Sep 17 00:00:00 2001 From: Dorota Czaplejewicz Date: Wed, 14 Aug 2019 17:01:48 +0000 Subject: [PATCH] container: Drop parent reference --- eek/eek-container.c | 2 -- eek/eek-element.c | 79 --------------------------------------------- eek/eek-element.h | 3 -- eek/eek-renderer.c | 13 ++++---- eek/eek-renderer.h | 2 +- 5 files changed, 7 insertions(+), 92 deletions(-) diff --git a/eek/eek-container.c b/eek/eek-container.c index 0d8c0dc3..2e8c8aab 100644 --- a/eek/eek-container.c +++ b/eek/eek-container.c @@ -61,7 +61,6 @@ eek_container_real_add_child (EekContainer *self, priv->last->next = g_list_prepend (priv->last->next, child); priv->last = priv->last->next; } - eek_element_set_parent (child, EEK_ELEMENT(self)); g_signal_emit (self, signals[CHILD_ADDED], 0, child); } @@ -79,7 +78,6 @@ eek_container_real_remove_child (EekContainer *self, if (head == priv->last) priv->last = g_list_previous (priv->last); priv->head = g_list_remove_link (priv->head, head); - eek_element_set_parent (child, NULL); g_signal_emit (self, signals[CHILD_REMOVED], 0, child); } diff --git a/eek/eek-element.c b/eek/eek-element.c index 3ab97b2c..a92c1921 100644 --- a/eek/eek-element.c +++ b/eek/eek-element.c @@ -40,16 +40,10 @@ enum { PROP_LAST }; -enum { - SYMBOL_INDEX_CHANGED, - LAST_SIGNAL -}; - typedef struct _EekElementPrivate { gchar *name; EekBounds bounds; - EekElement *parent; } EekElementPrivate; G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (EekElement, eek_element, G_TYPE_OBJECT) @@ -155,54 +149,6 @@ eek_element_init (EekElement *self) (void)self; } -/** - * eek_element_set_parent: - * @element: an #EekElement - * @parent: (allow-none): an #EekElement or %NULL - * - * Set the parent of @element to @parent. - */ -void -eek_element_set_parent (EekElement *element, - EekElement *parent) -{ - g_return_if_fail (EEK_IS_ELEMENT(element)); - g_return_if_fail (parent == NULL || EEK_IS_ELEMENT(parent)); - - EekElementPrivate *priv = eek_element_get_instance_private (element); - - if (priv->parent == parent) - return; - - if (priv->parent != NULL) { - /* release self-reference acquired when setting parent */ - g_object_unref (element); - } - - if (parent != NULL) { - g_object_ref (element); - } - - priv->parent = parent; -} - -/** - * eek_element_get_parent: - * @element: an #EekElement - * - * Get the parent of @element. - * Returns: an #EekElement if the parent is set - */ -EekElement * -eek_element_get_parent (EekElement *element) -{ - g_return_val_if_fail (EEK_IS_ELEMENT(element), NULL); - - EekElementPrivate *priv = eek_element_get_instance_private (element); - - return priv->parent; -} - /** * eek_element_set_name: * @element: an #EekElement @@ -280,31 +226,6 @@ eek_element_get_bounds (EekElement *element, memcpy (bounds, &priv->bounds, sizeof(EekBounds)); } -/** - * eek_element_get_absolute_position: - * @element: an #EekElement - * @x: pointer where the X coordinate of @element will be stored - * @y: pointer where the Y coordinate of @element will be stored - * - * Compute the absolute position of @element. - */ -void -eek_element_get_absolute_position (EekElement *element, - gdouble *x, - gdouble *y) -{ - EekBounds bounds; - gdouble ax = 0.0, ay = 0.0; - - do { - eek_element_get_bounds (element, &bounds); - ax += bounds.x; - ay += bounds.y; - } while ((element = eek_element_get_parent (element)) != NULL); - *x = ax; - *y = ay; -} - /** * eek_element_set_position: * @element: an #EekElement diff --git a/eek/eek-element.h b/eek/eek-element.h index 12d19fdd..918ba2b1 100644 --- a/eek/eek-element.h +++ b/eek/eek-element.h @@ -40,9 +40,6 @@ struct _EekElementClass GType eek_element_get_type (void) G_GNUC_CONST; -void eek_element_set_parent (EekElement *element, - EekElement *parent); -EekElement *eek_element_get_parent (EekElement *element); void eek_element_set_name (EekElement *element, const gchar *name); diff --git a/eek/eek-renderer.c b/eek/eek-renderer.c index 1923fc63..897c6957 100644 --- a/eek/eek-renderer.c +++ b/eek/eek-renderer.c @@ -360,8 +360,8 @@ eek_renderer_apply_transformation_for_key (EekRenderer *self, gint angle; gdouble s; - eek_renderer_get_key_bounds (self, key, &bounds, FALSE); - eek_renderer_get_key_bounds (self, key, &rotated_bounds, TRUE); + eek_renderer_get_key_bounds (self, view, key, &bounds, FALSE); + eek_renderer_get_key_bounds (self, view, key, &rotated_bounds, TRUE); section = eek_keyboard_get_section(view, key); angle = eek_section_get_angle (section); @@ -469,7 +469,7 @@ eek_renderer_real_render_key (EekRenderer *self, EekRendererPrivate *priv = eek_renderer_get_instance_private (self); EekBounds bounds; - eek_renderer_get_key_bounds (self, key, &bounds, rotate); + eek_renderer_get_key_bounds (self, view, key, &bounds, rotate); cairo_save (cr); /* Because this function is called separately from the keyboard rendering @@ -758,11 +758,12 @@ eek_renderer_get_size (EekRenderer *renderer, void eek_renderer_get_key_bounds (EekRenderer *renderer, + EekKeyboard *view, EekKey *key, EekBounds *bounds, gboolean rotate) { - EekElement *section; + EekSection *section = eek_keyboard_get_section(view, key); EekBounds section_bounds, keyboard_bounds; gint angle = 0; EekPoint points[4], min, max; @@ -773,10 +774,8 @@ eek_renderer_get_key_bounds (EekRenderer *renderer, EekRendererPrivate *priv = eek_renderer_get_instance_private (renderer); - section = eek_element_get_parent (EEK_ELEMENT(key)); - eek_element_get_bounds (EEK_ELEMENT(key), bounds); - eek_element_get_bounds (section, §ion_bounds); + eek_element_get_bounds (EEK_ELEMENT(section), §ion_bounds); eek_element_get_bounds (EEK_ELEMENT(level_keyboard_current(priv->keyboard)), &keyboard_bounds); diff --git a/eek/eek-renderer.h b/eek/eek-renderer.h index 8929b0be..ba3ddd97 100644 --- a/eek/eek-renderer.h +++ b/eek/eek-renderer.h @@ -74,7 +74,7 @@ void eek_renderer_set_allocation_size void eek_renderer_get_size (EekRenderer *renderer, gdouble *width, gdouble *height); -void eek_renderer_get_key_bounds (EekRenderer *renderer, +void eek_renderer_get_key_bounds (EekRenderer *renderer, EekKeyboard *view, EekKey *key, EekBounds *bounds, gboolean rotate);