From 9fc687a8c3b57c9bd74d48e3ae757ed9f9d3cb7b Mon Sep 17 00:00:00 2001 From: Yeongjong Lee Date: Fri, 28 Sep 2018 16:13:39 +0900 Subject: [PATCH] edje: call recalc in part_text_get if there is no available text data Summary: If edje_text_get is called before any edje_text_set function call, it return null, because rp->typedata.text->text is only set by edje_text_set function. If there is no available text data, find it from rp(edc). ref 7bbf18a950c027a365fea1b88e8dc3f16bb81abe Test Plan: make check Reviewers: zmike, id213sin, herdsman Reviewed By: id213sin Subscribers: Hermet, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D6961 --- src/lib/edje/edje_util.c | 19 +++++++++++++++++-- src/tests/edje/data/test_textblock.edc | 1 + src/tests/edje/edje_test_text.c | 2 ++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index a4d7276f1d..35de55b3f7 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -2080,13 +2080,28 @@ _edje_efl_text_text_get(const Eo *obj EINA_UNUSED, Edje *ed, const char *part, { const char *entry; if (legacy) - entry = rp->typedata.text->text; + { + if (rp->typedata.text->text) + { + entry = rp->typedata.text->text; + } + else + { +#ifdef EDJE_CALC_CACHE + if (rp->invalidate || ed->all_part_change) +#else + if (ed->dirty) +#endif + _edje_recalc_do(ed); + entry = evas_object_textblock_text_markup_get(rp->object); + } + } else { if (get_markup) { #ifdef EDJE_CALC_CACHE - if (rp->invalidate) + if (rp->invalidate || ed->all_part_change) #else if (ed->dirty) #endif diff --git a/src/tests/edje/data/test_textblock.edc b/src/tests/edje/data/test_textblock.edc index e3569a6467..e8223e75be 100644 --- a/src/tests/edje/data/test_textblock.edc +++ b/src/tests/edje/data/test_textblock.edc @@ -11,6 +11,7 @@ collections { description { state: "default" 0.0; min: 300 300; text { + text: "Bye"; style: "tb_style"; } } diff --git a/src/tests/edje/edje_test_text.c b/src/tests/edje/edje_test_text.c index d87ab48208..0e975f3de7 100644 --- a/src/tests/edje/edje_test_text.c +++ b/src/tests/edje/edje_test_text.c @@ -105,6 +105,8 @@ EFL_START_TEST(edje_test_textblock) obj = edje_object_add(evas); fail_unless(edje_object_file_set(obj, test_layout_get("test_textblock.edj"), "test_textblock")); + txt = edje_object_part_text_get(obj, "text"); + fail_if(!txt || strcmp(txt, "Bye")); edje_object_part_text_set(obj, "text", buf); txt = edje_object_part_text_get(obj, "text"); fail_if(!txt || strcmp(txt, buf));