summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Hacohen <tom@stosb.com>2014-12-16 14:08:42 +0000
committerTom Hacohen <tom@stosb.com>2015-01-14 08:45:42 +0000
commit53f07c60f59e9daf3f2d164af87b6113015435f1 (patch)
tree791fc7ab2d3ffdb54a68545b33e571b2f1363486
parent58e14718d87333849ba742cc50a955e136a281ae (diff)
downloadefl-53f07c60f59e9daf3f2d164af87b6113015435f1.tar.gz
Fix text getting.
-rw-r--r--src/lib/evas/canvas/evas_textblock2.c36
1 files changed, 31 insertions, 5 deletions
diff --git a/src/lib/evas/canvas/evas_textblock2.c b/src/lib/evas/canvas/evas_textblock2.c
index f95ab02ede..cd2187efd8 100644
--- a/src/lib/evas/canvas/evas_textblock2.c
+++ b/src/lib/evas/canvas/evas_textblock2.c
@@ -84,6 +84,7 @@ static const char o_type[] = "textblock2";
/* The char to be inserted instead of visible formats */
#define _REPLACEMENT_CHAR 0xFFFC
#define _PARAGRAPH_SEPARATOR 0x2029
+#define _PARAGRAPH_SEPARATOR_UTF8 "\xE2\x80\xA9"
#define _NEWLINE '\n'
#define _TAB '\t'
@@ -3924,12 +3925,37 @@ _evas_textblock2_efl_text_text_set(Eo *obj, Evas_Textblock2_Data *pd EINA_UNUSED
EOLIAN static const char *
-_evas_textblock2_efl_text_text_get(Eo *obj, Evas_Textblock2_Data *pd)
+_evas_textblock2_efl_text_text_get(Eo *obj EINA_UNUSED, Evas_Textblock2_Data *pd)
{
- (void) obj;
- (void) pd;
- /* FIXME: Do something. */
- return "";
+ Evas_Object_Textblock2_Node_Text *n;
+ Eina_Strbuf *txt = NULL;
+
+ const char *markup;
+ if (pd->utf8_text)
+ {
+ markup = pd->utf8_text;
+ return markup;
+ }
+
+ txt = eina_strbuf_new();
+ EINA_INLIST_FOREACH(pd->text_nodes, n)
+ {
+ char *buf;
+ int len = 0;
+ buf = eina_unicode_unicode_to_utf8(eina_ustrbuf_string_get(n->unicode), &len);
+ eina_strbuf_append_length(txt, buf, len);
+ if (EINA_INLIST_GET(n)->next)
+ {
+ eina_strbuf_append(txt, _PARAGRAPH_SEPARATOR_UTF8);
+ }
+
+ free(buf);
+ }
+
+ pd->utf8_text = eina_strbuf_string_steal(txt);
+ eina_strbuf_free(txt);
+
+ return pd->utf8_text;
}
EAPI void