diff --git a/src/lib/edje/edje_textblock_styles.c b/src/lib/edje/edje_textblock_styles.c index 7ac8bfa4cd..9f74b911db 100644 --- a/src/lib/edje/edje_textblock_styles.c +++ b/src/lib/edje/edje_textblock_styles.c @@ -258,14 +258,57 @@ _edje_textblock_style_member_add(Edje *ed, Edje_Style *stl) EINA_LIST_FOREACH(stl->tags, l, tag) { if (tag->text_class) - { - efl_observable_observer_add(_edje_text_class_member, tag->text_class, ed->obj); - - /* Newly added text_class member should be updated - according to the latest text_class's status. */ - _edje_textblock_style_update(ed, stl, EINA_TRUE); - } + efl_observable_observer_add(_edje_text_class_member, tag->text_class, ed->obj); } + /* Newly added text_class member should be updated + according to the latest text_class's status. */ + _edje_textblock_style_update(ed, stl, EINA_TRUE); +} + +static inline void +_edje_textblock_style_observer_add(Edje_Style *stl, Efl_Observer* observer) +{ + Eina_List* l; + Edje_Style_Tag *tag; + + EINA_LIST_FOREACH(stl->tags, l, tag) + { + if (tag->text_class) + efl_observable_observer_add(_edje_text_class_member, tag->text_class, observer); + } +} + +static inline void +_edje_textblock_style_observer_del(Edje_Style *stl, Efl_Observer* observer) +{ + Eina_List* l; + Edje_Style_Tag *tag; + + EINA_LIST_FOREACH(stl->tags, l, tag) + { + if (tag->text_class) + efl_observable_observer_del(_edje_text_class_member, tag->text_class, observer); + } +} + +static inline void +_edje_textblock_style_add(Edje *ed, Edje_Style *stl) +{ + if (!stl) return; + + if (stl->readonly) return; + + _edje_textblock_style_observer_add(stl, ed->obj); + + _edje_textblock_style_update(ed, stl, EINA_TRUE); +} + +static inline void +_edje_textblock_style_del(Edje *ed, Edje_Style *stl) +{ + if (!stl) return; + + _edje_textblock_style_observer_del(stl, ed->obj); } void @@ -284,7 +327,8 @@ _edje_textblock_styles_add(Edje *ed, Edje_Real_Part *ep) desc = (Edje_Part_Description_Text *)pt->default_desc; style = edje_string_get(&desc->text.style); stl = _edje_textblock_style_search(ed, style); - _edje_textblock_style_member_add(ed, stl); + + _edje_textblock_style_add(ed, stl); /* If any other classes exist add them */ for (i = 0; i < pt->other.desc_count; ++i) @@ -292,7 +336,8 @@ _edje_textblock_styles_add(Edje *ed, Edje_Real_Part *ep) desc = (Edje_Part_Description_Text *)pt->other.desc[i]; style = edje_string_get(&desc->text.style); stl = _edje_textblock_style_search(ed, style); - _edje_textblock_style_member_add(ed, stl); + + _edje_textblock_style_add(ed, stl); } } @@ -311,34 +356,15 @@ _edje_textblock_styles_del(Edje *ed, Edje_Part *pt) stl = _edje_textblock_style_search(ed, style); - if (stl) - { - Edje_Style_Tag *tag; - Eina_List *l; - - EINA_LIST_FOREACH(stl->tags, l, tag) - { - if (tag->text_class) - efl_observable_observer_del(_edje_text_class_member, tag->text_class, ed->obj); - } - } + _edje_textblock_style_del(ed, stl); for (i = 0; i < pt->other.desc_count; ++i) { desc = (Edje_Part_Description_Text *)pt->other.desc[i]; style = edje_string_get(&desc->text.style); stl = _edje_textblock_style_search(ed, style); - if (stl) - { - Edje_Style_Tag *tag; - Eina_List *l; - EINA_LIST_FOREACH(stl->tags, l, tag) - { - if (tag->text_class) - efl_observable_observer_del(_edje_text_class_member, tag->text_class, ed->obj); - } - } + _edje_textblock_style_del(ed, stl); } }