Canvas layout: improve legacy code paths for Efl.Text

Better handling of specific cases where you want to efl_text_set on
a TEXTBLOCK part.
Follow-up to af1595fd01.
This commit is contained in:
Daniel Hirt 2017-10-01 18:38:18 +03:00
parent 9ab866f32c
commit 0061a4bb34
3 changed files with 29 additions and 18 deletions

View File

@ -11,7 +11,7 @@ _efl_canvas_layout_part_text_efl_text_text_set(Eo *obj,
void *_pd EINA_UNUSED, const char *text) void *_pd EINA_UNUSED, const char *text)
{ {
PROXY_DATA_GET(obj, pd); PROXY_DATA_GET(obj, pd);
_edje_efl_text_set(obj, pd->ed, pd->part, text, EINA_FALSE); _edje_efl_text_set(obj, pd->ed, pd->part, text, EINA_FALSE, EINA_FALSE);
RETURN_VOID; RETURN_VOID;
} }
@ -36,7 +36,7 @@ _efl_canvas_layout_part_text_efl_text_markup_markup_set(Eo *obj,
void *_pd EINA_UNUSED, const char *text) void *_pd EINA_UNUSED, const char *text)
{ {
PROXY_DATA_GET(obj, pd); PROXY_DATA_GET(obj, pd);
_edje_efl_text_set(obj, pd->ed, pd->part, text, EINA_TRUE); _edje_efl_text_set(obj, pd->ed, pd->part, text, EINA_FALSE, EINA_TRUE);
RETURN_VOID; RETURN_VOID;
} }

View File

@ -3160,7 +3160,7 @@ Evas_Object *_edje_object_part_external_content_get(Edje *ed, const char *part,
/* part text */ /* part text */
Eo *_edje_text_internal_proxy_get(Edje_Object *obj, Edje *ed, Edje_Real_Part *rp); Eo *_edje_text_internal_proxy_get(Edje_Object *obj, Edje *ed, Edje_Real_Part *rp);
Eina_Bool _edje_efl_text_set(Eo *obj, Edje *ed, const char *part, const char *text, Eina_Bool set_markup); Eina_Bool _edje_efl_text_set(Eo *obj, Edje *ed, const char *part, const char *text, Eina_Bool legacy, Eina_Bool set_markup);
const char *_edje_efl_text_get(Eo *obj, Edje *ed, const char *part, Eina_Bool legacy, Eina_Bool get_markup); const char *_edje_efl_text_get(Eo *obj, Edje *ed, const char *part, Eina_Bool legacy, Eina_Bool get_markup);
Eina_Bool _edje_efl_text_markup_set(Eo *obj, Edje *ed, const char *part, const char *markup); Eina_Bool _edje_efl_text_markup_set(Eo *obj, Edje *ed, const char *part, const char *markup);
const char *_edje_efl_text_markup_get(Eo *obj, Edje *ed, const char *part); const char *_edje_efl_text_markup_get(Eo *obj, Edje *ed, const char *part);

View File

@ -1842,7 +1842,7 @@ _edje_object_text_change_cb_set(Eo *obj EINA_UNUSED, Edje *ed, Edje_Text_Change_
} }
Eina_Bool Eina_Bool
_edje_object_part_text_raw_generic_set(Edje *ed, Evas_Object *obj, Edje_Real_Part *rp, const char *part, const char *text, Eina_Bool set_markup) _edje_object_part_text_raw_generic_set(Edje *ed, Evas_Object *obj, Edje_Real_Part *rp, const char *part, const char *text, Eina_Bool set_markup, Eina_Bool legacy)
{ {
if ((rp->type != EDJE_RP_TYPE_TEXT) || if ((rp->type != EDJE_RP_TYPE_TEXT) ||
(!rp->typedata.text)) return EINA_TRUE; (!rp->typedata.text)) return EINA_TRUE;
@ -1861,19 +1861,26 @@ _edje_object_part_text_raw_generic_set(Edje *ed, Evas_Object *obj, Edje_Real_Par
else else
if (text) if (text)
{ {
if (set_markup && (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)) if (legacy)
{
char *mkup;
mkup =
efl_text_markup_util_text_to_markup(EFL_TEXT_MARKUP_UTIL_CLASS,
text);
rp->typedata.text->text = eina_stringshare_add(mkup);
free(mkup);
}
else
{ {
rp->typedata.text->text = eina_stringshare_add(text); rp->typedata.text->text = eina_stringshare_add(text);
} }
else if (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)
{
if (set_markup)
{
rp->typedata.text->text = eina_stringshare_add(text);
}
else
{
char *mkup;
mkup = efl_text_markup_util_text_to_markup(
EFL_TEXT_MARKUP_UTIL_CLASS,
text);
rp->typedata.text->text = eina_stringshare_add(mkup);
free(mkup);
}
}
} }
ed->dirty = EINA_TRUE; ed->dirty = EINA_TRUE;
ed->recalc_call = EINA_TRUE; ed->recalc_call = EINA_TRUE;
@ -1891,7 +1898,7 @@ Eina_Bool
_edje_object_part_text_raw_set(Edje *ed, Evas_Object *obj, Edje_Real_Part *rp, const char *part, const char *text) _edje_object_part_text_raw_set(Edje *ed, Evas_Object *obj, Edje_Real_Part *rp, const char *part, const char *text)
{ {
return _edje_object_part_text_raw_generic_set(ed, obj, rp, part, text, return _edje_object_part_text_raw_generic_set(ed, obj, rp, part, text,
EINA_FALSE); EINA_FALSE, EINA_TRUE);
} }
void void
@ -1924,7 +1931,7 @@ _edje_user_define_string(Edje *ed, const char *part, const char *raw_text, Edje_
Eina_Bool Eina_Bool
_edje_efl_text_set(Eo *obj, Edje *ed, const char *part, const char *text, _edje_efl_text_set(Eo *obj, Edje *ed, const char *part, const char *text,
Eina_Bool set_markup) Eina_Bool legacy, Eina_Bool set_markup)
{ {
Edje_Real_Part *rp; Edje_Real_Part *rp;
Eina_Bool int_ret; Eina_Bool int_ret;
@ -1940,7 +1947,7 @@ _edje_efl_text_set(Eo *obj, Edje *ed, const char *part, const char *text,
return EINA_TRUE; return EINA_TRUE;
} }
int_ret = _edje_object_part_text_raw_generic_set(ed, obj, rp, part, text, int_ret = _edje_object_part_text_raw_generic_set(ed, obj, rp, part, text,
set_markup); set_markup, legacy);
_edje_user_define_string(ed, part, rp->typedata.text->text, EDJE_TEXT_TYPE_NORMAL); _edje_user_define_string(ed, part, rp->typedata.text->text, EDJE_TEXT_TYPE_NORMAL);
return int_ret; return int_ret;
} }
@ -6134,7 +6141,11 @@ edje_object_part_swallow_get(const Edje_Object *obj, const char *part)
EAPI Eina_Bool EAPI Eina_Bool
edje_object_part_text_set(const Edje_Object *obj, const char *part, const char *text) edje_object_part_text_set(const Edje_Object *obj, const char *part, const char *text)
{ {
efl_text_set(efl_part(obj, part), text); Edje *ed;
ed = _edje_fetch(obj);
_edje_efl_text_set((Eo *) obj, ed, part, text, EINA_TRUE, EINA_FALSE);
return EINA_TRUE; return EINA_TRUE;
} }