From 09286f1b709bdb3c77700e546b747862b289565c Mon Sep 17 00:00:00 2001 From: tasn Date: Wed, 13 Apr 2011 12:21:58 +0000 Subject: [PATCH] Evas textblock: Clean up getting bidi props (unify to a function). git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@58632 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/canvas/evas_object_textblock.c | 57 +++++++++++++++++----------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/src/lib/canvas/evas_object_textblock.c b/src/lib/canvas/evas_object_textblock.c index 6b8ed68..d1c503c 100644 --- a/src/lib/canvas/evas_object_textblock.c +++ b/src/lib/canvas/evas_object_textblock.c @@ -469,6 +469,9 @@ static void _evas_textblock_changed(Evas_Object_Textblock *o, Evas_Object *obj); static void _evas_textblock_invalidate_all(Evas_Object_Textblock *o); static void _evas_textblock_cursors_update_offset(const Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Text *n, size_t start, int offset); static void _evas_textblock_cursors_set_node(Evas_Object_Textblock *o, const Evas_Object_Textblock_Node_Text *n, Evas_Object_Textblock_Node_Text *new_node); +#ifdef BIDI_SUPPORT +static inline void _evas_textblock_node_update_bidi_props(Evas_Object_Textblock_Node_Text *n); +#endif /* styles */ /** @@ -4719,10 +4722,7 @@ _evas_textblock_nodes_merge(Evas_Object_Textblock *o, Evas_Object_Textblock_Node to->format_node = from->format_node; } #ifdef BIDI_SUPPORT - evas_bidi_paragraph_props_unref(to->bidi_props); - to->bidi_props = evas_bidi_paragraph_props_get( - eina_ustrbuf_string_get(to->unicode), - eina_ustrbuf_length_get(to->unicode)); + _evas_textblock_node_update_bidi_props(to); #endif _evas_textblock_cursors_set_node(o, from, to); @@ -6022,6 +6022,24 @@ _evas_textblock_node_text_new(void) return n; } + +#ifdef BIDI_SUPPORT +/** + * @internal + * Update bidi paragraph props. + * + * @return the new text node. + */ +static inline void +_evas_textblock_node_update_bidi_props(Evas_Object_Textblock_Node_Text *n) +{ + evas_bidi_paragraph_props_unref(n->bidi_props); + n->bidi_props = evas_bidi_paragraph_props_get( + eina_ustrbuf_string_get(n->unicode), + eina_ustrbuf_length_get(n->unicode)); +} +#endif + /** * @internal * Break a paragraph. This does not add a PS but only splits the paragraph @@ -6081,15 +6099,8 @@ _evas_textblock_cursor_break_paragraph(Evas_Textblock_Cursor *cur, eina_ustrbuf_append_length(n->unicode, text + start, len); eina_ustrbuf_remove(cur->node->unicode, start, start + len); #ifdef BIDI_SUPPORT - evas_bidi_paragraph_props_unref(n->bidi_props); - n->bidi_props = evas_bidi_paragraph_props_get( - eina_ustrbuf_string_get(n->unicode), - eina_ustrbuf_length_get(n->unicode)); - - evas_bidi_paragraph_props_unref(cur->node->bidi_props); - cur->node->bidi_props = evas_bidi_paragraph_props_get( - eina_ustrbuf_string_get(cur->node->unicode), - eina_ustrbuf_length_get(cur->node->unicode)); + _evas_textblock_node_update_bidi_props(n); + _evas_textblock_node_update_bidi_props(cur->node); #endif } else @@ -6280,10 +6291,7 @@ evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *_text) if (fnode && (fnode->text_node == cur->node)) fnode->offset += len; #ifdef BIDI_SUPPORT - evas_bidi_paragraph_props_unref(n->bidi_props); - n->bidi_props = evas_bidi_paragraph_props_get( - eina_ustrbuf_string_get(n->unicode), - eina_ustrbuf_length_get(n->unicode)); + _evas_textblock_node_update_bidi_props(n); #endif _evas_textblock_changed(o, cur->obj); n->dirty = EINA_TRUE; @@ -6456,10 +6464,7 @@ evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *form else { #ifdef BIDI_SUPPORT - evas_bidi_paragraph_props_unref(cur->node->bidi_props); - cur->node->bidi_props = evas_bidi_paragraph_props_get( - eina_ustrbuf_string_get(cur->node->unicode), - eina_ustrbuf_length_get(cur->node->unicode)); + _evas_textblock_node_update_bidi_props(cur->node); #endif } } @@ -6547,10 +6552,7 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur) _evas_textblock_cursor_nodes_merge(cur); } #ifdef BIDI_SUPPORT - evas_bidi_paragraph_props_unref(n->bidi_props); - n->bidi_props = evas_bidi_paragraph_props_get( - eina_ustrbuf_string_get(n->unicode), - eina_ustrbuf_length_get(n->unicode)); + _evas_textblock_node_update_bidi_props(n); #endif if (cur->pos == eina_ustrbuf_length_get(n->unicode)) @@ -6651,10 +6653,7 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C } #ifdef BIDI_SUPPORT - evas_bidi_paragraph_props_unref(n1->bidi_props); - n1->bidi_props = evas_bidi_paragraph_props_get( - eina_ustrbuf_string_get(n1->unicode), - eina_ustrbuf_length_get(n1->unicode)); + _evas_textblock_node_update_bidi_props(n1); #endif evas_textblock_cursor_copy(cur1, cur2); -- 2.7.4