From 292f8b8074290c67ef8db0bc23284da7cf22e97a Mon Sep 17 00:00:00 2001 From: Nicola Fontana Date: Mon, 4 Mar 2013 15:12:35 +0100 Subject: [PATCH] adg: properly initialize AdgText:local-mix AdgText must use a custom default value for local-mix: set it properly also when using g_object_new(). --- src/adg/adg-text.c | 15 ++++++++++++--- src/adg/tests/test-text.c | 30 ++++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/adg/adg-text.c b/src/adg/adg-text.c index dddc6d16..de07bf33 100644 --- a/src/adg/adg-text.c +++ b/src/adg/adg-text.c @@ -28,6 +28,11 @@ * * The text entity is not subject to the local matrix, only its origin is. * + * + * By default, the #AdgText:local-mix property is set to + * #ADG_MIX_ANCESTORS_NORMALIZED on #AdgText entities. + * + * * Since: 1.0 **/ @@ -50,6 +55,7 @@ #include "adg-font-style.h" #include "adg-pango-style.h" #include "adg-textual.h" +#include "adg-entity-private.h" #include "adg-text.h" #include "adg-text-private.h" @@ -139,12 +145,18 @@ adg_text_init(AdgText *text) { AdgTextPrivate *data = G_TYPE_INSTANCE_GET_PRIVATE(text, ADG_TYPE_TEXT, AdgTextPrivate); + AdgEntityPrivate *entity_data = ((AdgEntity *) text)->data; data->font_dress = ADG_DRESS_FONT_TEXT; data->text = NULL; data->layout = NULL; text->data = data; + + /* Initialize to custom default some AdgEntity field by directly + * accessing the private struct to avoid notify signal emissions + */ + entity_data->local_mix = ADG_MIX_ANCESTORS_NORMALIZED; } static void @@ -224,8 +236,6 @@ _adg_set_property(GObject *object, guint prop_id, * @text: the text * * Creates a new text entity using @text as its content. - * The #AdgEntity:local-mix property is set by default to - * #ADG_LOCAL_NORMALIZED. * * Returns: the newly created text entity * @@ -235,7 +245,6 @@ AdgText * adg_text_new(const gchar *text) { return g_object_new(ADG_TYPE_TEXT, - "local-mix", ADG_MIX_ANCESTORS_NORMALIZED, "text", text, NULL); } diff --git a/src/adg/tests/test-text.c b/src/adg/tests/test-text.c index 5aede431..91ddda03 100644 --- a/src/adg/tests/test-text.c +++ b/src/adg/tests/test-text.c @@ -22,6 +22,31 @@ static void +_adg_test_local_mix(void) +{ + AdgText *text; + AdgEntity *entity; + + /* Check default local mix method */ + text = adg_text_new(""); + entity = (AdgEntity *) text; + g_assert_cmpint(adg_entity_get_local_mix(entity), ==, ADG_MIX_ANCESTORS_NORMALIZED); + adg_entity_destroy(entity); + + /* Check local mix method overriding */ + text = g_object_new(ADG_TYPE_TEXT, "local-mix", ADG_MIX_DISABLED, NULL); + entity = (AdgEntity *) text; + g_assert_cmpint(adg_entity_get_local_mix(entity), ==, ADG_MIX_DISABLED); + adg_entity_destroy(entity); + + /* Check default mix using GObject methods */ + text = g_object_new(ADG_TYPE_TEXT, NULL); + entity = (AdgEntity *) text; + g_assert_cmpint(adg_entity_get_local_mix(entity), ==, ADG_MIX_ANCESTORS_NORMALIZED); + adg_entity_destroy(entity); +} + +static void _adg_test_font_dress(void) { AdgText *text; @@ -117,8 +142,9 @@ main(int argc, char *argv[]) { adg_test_init(&argc, &argv); - adg_test_add_func("/adg/string/font-dress", _adg_test_font_dress); - adg_test_add_func("/adg/string/string", _adg_test_text); + adg_test_add_func("/adg/text/local-mix", _adg_test_local_mix); + adg_test_add_func("/adg/text/font-dress", _adg_test_font_dress); + adg_test_add_func("/adg/text/string", _adg_test_text); return g_test_run(); } -- 2.11.4.GIT