summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Hirt <hirt.danny@gmail.com>2017-09-25 20:09:37 +0300
committerDaniel Hirt <hirt.danny@gmail.com>2017-09-26 15:12:42 +0300
commit44dcd1927bccf7493b5c1e9f7687a46ddea75d29 (patch)
tree102d6b467df881cf27c99536fc91f10d7b0d781a
parent8087729a4b9404da0fec12b04db45e1dc81c38cc (diff)
downloadefl-44dcd1927bccf7493b5c1e9f7687a46ddea75d29.tar.gz
Canvas text: implement most markup functionality
-rw-r--r--src/lib/efl/interfaces/efl_text_markup.eo10
-rw-r--r--src/lib/evas/canvas/efl_canvas_text.eo7
-rw-r--r--src/lib/evas/canvas/evas_object_textblock.c72
3 files changed, 65 insertions, 24 deletions
diff --git a/src/lib/efl/interfaces/efl_text_markup.eo b/src/lib/efl/interfaces/efl_text_markup.eo
index cb9f3c1ef9..99ea34b4ba 100644
--- a/src/lib/efl/interfaces/efl_text_markup.eo
+++ b/src/lib/efl/interfaces/efl_text_markup.eo
@@ -16,16 +16,6 @@ interface Efl.Text.Markup(Efl.Text.Cursor) {
@in markup: string; [[The markup text to insert]]
}
}
- text_to_markup @class {
- [[Converts a given (UTF-8) text to a markup-compatible string.
- This is used mainly to set a plain text with the $.markup_set
- property.
- ]]
- params {
- @in text: string; [[The text to convert to markup]]
- }
- return: mstring @owned; [[The markup representation of given text]]
- }
}
}
diff --git a/src/lib/evas/canvas/efl_canvas_text.eo b/src/lib/evas/canvas/efl_canvas_text.eo
index 22b8e9dd0d..00a05653df 100644
--- a/src/lib/evas/canvas/efl_canvas_text.eo
+++ b/src/lib/evas/canvas/efl_canvas_text.eo
@@ -2,8 +2,9 @@ import efl_text_types;
struct Efl.Canvas.Text.Style; [[EFL text style data structure]]
-class Efl.Canvas.Text (Efl.Canvas.Object, Efl.Text, Efl.Text.Properties, Efl.Canvas.Filter.Internal,
-Efl.Text.Font, Efl.Text.Style, Efl.Text.Format, Efl.Text.Cursor, Efl.Text.Annotate)
+class Efl.Canvas.Text (Efl.Canvas.Object, Efl.Text, Efl.Text.Properties,
+Efl.Canvas.Filter.Internal, Efl.Text.Font, Efl.Text.Style, Efl.Text.Format,
+Efl.Text.Cursor, Efl.Text.Annotate, Efl.Text.Markup)
{
[[Efl canvas text class]]
legacy_prefix: evas_object_textblock;
@@ -346,6 +347,8 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format, Efl.Text.Cursor, Efl.Text.Annota
Efl.Text.Annotate.annotation_positions_get;
Efl.Text.Annotate.cursor_object_item_annotation { get; }
Efl.Text.Annotate.cursor_object_item_insert;
+ Efl.Text.Markup.markup { set; get; }
+ Efl.Text.Markup.cursor_markup_insert;
}
events {
cursor,changed; [[Called when cursor changed]]
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c
index eabc0b18bc..8a6fde779a 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -7454,12 +7454,12 @@ _prepend_escaped_char(Efl_Text_Cursor_Cursor *cur_obj, const char *s,
}
-EAPI void
-evas_object_textblock_text_markup_set(Eo *eo_obj, const char *text)
+static void
+_evas_object_textblock_text_markup_set(Eo *eo_obj, Efl_Canvas_Text_Data *o,
+ const char *text)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
evas_object_async_block(obj);
- Efl_Canvas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
if (text == o->markup_text)
{
/* Text is the same and already stringshared, do nothing */
@@ -7507,10 +7507,26 @@ evas_object_textblock_text_markup_set(Eo *eo_obj, const char *text)
}
EAPI void
-evas_object_textblock_text_markup_prepend(Efl_Text_Cursor_Cursor *cur, const char *text)
+evas_object_textblock_text_markup_set(Eo *eo_obj, const char *text)
+{
+ Efl_Canvas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
+ _evas_object_textblock_text_markup_set(eo_obj, o, text);
+}
+
+EOLIAN void
+_efl_canvas_text_efl_text_markup_markup_set(Eo *eo_obj, Efl_Canvas_Text_Data *o,
+ const char *text)
+{
+ ASYNC_BLOCK;
+ _evas_object_textblock_text_markup_set(eo_obj, o, text);
+ //efl_event_callback_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CHANGED, NULL);
+}
+
+static void
+_evas_object_textblock_text_markup_prepend(Eo *eo_obj,
+ Efl_Text_Cursor_Cursor *cur, const char *text)
{
if (!cur) return;
- Evas_Object *eo_obj = cur->obj;
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
evas_object_async_block(obj);
TB_HEAD();
@@ -7631,6 +7647,21 @@ evas_object_textblock_text_markup_prepend(Efl_Text_Cursor_Cursor *cur, const cha
_evas_textblock_changed(o, eo_obj);
}
+EAPI void
+evas_object_textblock_text_markup_prepend(Efl_Text_Cursor_Cursor *cur, const char *text)
+{
+ _evas_object_textblock_text_markup_prepend(cur->obj, cur, text);
+}
+
+EOLIAN static void
+_efl_canvas_text_efl_text_markup_cursor_markup_insert(Eo *eo_obj,
+ Efl_Canvas_Text_Data *o EINA_UNUSED,
+ Efl_Text_Cursor_Cursor *cur, const char *markup)
+{
+ ASYNC_BLOCK;
+ _evas_object_textblock_text_markup_prepend(eo_obj, cur, markup);
+ //efl_event_callback_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CHANGED, NULL);
+}
/**
* @internal
@@ -7711,15 +7742,14 @@ _markup_get_text_append(Eina_Strbuf *txt, const Eina_Unicode *text)
free(base);
}
-EAPI const char*
-evas_object_textblock_text_markup_get(Eo *eo_obj)
+static const char*
+_evas_object_textblock_text_markup_get(Eo *eo_obj, Efl_Canvas_Text_Data *o)
{
Evas_Object_Textblock_Node_Text *n;
Eina_Strbuf *txt = NULL;
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
evas_object_async_block(obj);
- Efl_Canvas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
const char *markup;
if (o->markup_text)
{
@@ -7781,6 +7811,19 @@ evas_object_textblock_text_markup_get(Eo *eo_obj)
return markup;
}
+EAPI const char*
+evas_object_textblock_text_markup_get(Eo *eo_obj)
+{
+ Efl_Canvas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
+ return _evas_object_textblock_text_markup_get(eo_obj, o);
+}
+
+EOLIAN const char*
+_efl_canvas_text_efl_text_markup_markup_get(Eo *eo_obj, Efl_Canvas_Text_Data *o)
+{
+ return _evas_object_textblock_text_markup_get(eo_obj, o);
+}
+
EAPI char *
evas_textblock_text_markup_to_utf8(const Evas_Object *eo_obj, const char *text)
{
@@ -7942,14 +7985,12 @@ evas_textblock_text_markup_to_utf8(const Evas_Object *eo_obj, const char *text)
return ret;
}
-EAPI char *
-evas_textblock_text_utf8_to_markup(const Evas_Object *eo_obj, const char *text)
+static char *
+_evas_textblock_text_utf8_to_markup(const char *text)
{
Eina_Strbuf *sbuf;
char *str = NULL;
- (void) eo_obj;
-
if (!text) return NULL;
sbuf = eina_strbuf_new();
@@ -7962,6 +8003,13 @@ evas_textblock_text_utf8_to_markup(const Evas_Object *eo_obj, const char *text)
}
+EAPI char *
+evas_textblock_text_utf8_to_markup(const Evas_Object *eo_obj EINA_UNUSED,
+ const char *text)
+{
+ return _evas_textblock_text_utf8_to_markup(text);
+}
+
static void
_obstacle_update(Evas_Textblock_Obstacle *obs, Eo *eo_obj)
{