From 2d91959326fb881ea18d42940d315a2c42c495bb Mon Sep 17 00:00:00 2001 From: Nicola Fontana Date: Mon, 4 Mar 2013 15:13:01 +0100 Subject: [PATCH] adg: properly initialize AdgToyText:local-mix AdgToyText must use a custom default value for local-mix: set it properly also when using g_object_new(). --- src/adg/adg-toy-text.c | 15 ++++++++++++--- src/adg/tests/test-toy-text.c | 26 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/adg/adg-toy-text.c b/src/adg/adg-toy-text.c index 2b330b54..d65a9841 100644 --- a/src/adg/adg-toy-text.c +++ b/src/adg/adg-toy-text.c @@ -27,6 +27,11 @@ * * The toy text entity is not subject to the local matrix, only its origin is. * + * + * By default, the #AdgToyText:local-mix property is set to + * #ADG_MIX_ANCESTORS_NORMALIZED on #AdgToyText entities. + * + * * Since: 1.0 **/ @@ -46,6 +51,7 @@ #include "adg-style.h" #include "adg-font-style.h" #include "adg-textual.h" +#include "adg-entity-private.h" #include "adg-toy-text.h" #include "adg-toy-text-private.h" @@ -134,12 +140,18 @@ adg_toy_text_init(AdgToyText *toy_text) AdgToyTextPrivate *data = G_TYPE_INSTANCE_GET_PRIVATE(toy_text, ADG_TYPE_TOY_TEXT, AdgToyTextPrivate); + AdgEntityPrivate *entity_data = ((AdgEntity *) toy_text)->data; data->font_dress = ADG_DRESS_FONT_TEXT; data->text = NULL; data->glyphs = NULL; toy_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 @@ -210,8 +222,6 @@ _adg_set_property(GObject *object, guint prop_id, * @text: the text * * Creates a new toy text entity using @text as its content. - * The #AdgEntity:local-mix property is set by default to - * #ADG_LOCAL_NORMALIZED. * * Returns: the newly created toy text entity * @@ -221,7 +231,6 @@ AdgToyText * adg_toy_text_new(const gchar *text) { return g_object_new(ADG_TYPE_TOY_TEXT, - "local-mix", ADG_MIX_ANCESTORS_NORMALIZED, "text", text, NULL); } diff --git a/src/adg/tests/test-toy-text.c b/src/adg/tests/test-toy-text.c index 899336a0..54d3b8c7 100644 --- a/src/adg/tests/test-toy-text.c +++ b/src/adg/tests/test-toy-text.c @@ -22,6 +22,31 @@ static void +_adg_test_local_mix(void) +{ + AdgToyText *toy_text; + AdgEntity *entity; + + /* Check default local mix method */ + toy_text = adg_text_new(""); + entity = (AdgEntity *) toy_text; + g_assert_cmpint(adg_entity_get_local_mix(entity), ==, ADG_MIX_ANCESTORS_NORMALIZED); + adg_entity_destroy(entity); + + /* Check local mix method overriding */ + toy_text = g_object_new(ADG_TYPE_TEXT, "local-mix", ADG_MIX_DISABLED, NULL); + entity = (AdgEntity *) toy_text; + g_assert_cmpint(adg_entity_get_local_mix(entity), ==, ADG_MIX_DISABLED); + adg_entity_destroy(entity); + + /* Check default mix using GObject methods */ + toy_text = g_object_new(ADG_TYPE_TEXT, NULL); + entity = (AdgEntity *) toy_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) { AdgToyText *toy_text; @@ -117,6 +142,7 @@ main(int argc, char *argv[]) { adg_test_init(&argc, &argv); + adg_test_add_func("/adg/toy-text/local-mix", _adg_test_font_dress); adg_test_add_func("/adg/toy-text/font-dress", _adg_test_font_dress); adg_test_add_func("/adg/toy-text/text", _adg_test_text); -- 2.11.4.GIT