diff options
author | Daniel Hirt <hirt.danny@gmail.com> | 2017-09-10 10:54:03 +0300 |
---|---|---|
committer | Daniel Hirt <hirt.danny@gmail.com> | 2017-09-10 10:54:03 +0300 |
commit | 5c1cc4e97748c55704c79e57adf4c5be0427ff43 (patch) | |
tree | 76ea048e5a2d1ad44c2994607c18b4a0c87cddb1 | |
parent | 31e5085083fd763866ef70a4286f6a7eef5bec14 (diff) | |
download | efl-5c1cc4e97748c55704c79e57adf4c5be0427ff43.tar.gz |
Canvas text: fixup
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_text.eo | 6 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_textblock.c | 24 |
2 files changed, 22 insertions, 8 deletions
diff --git a/src/lib/evas/canvas/efl_canvas_text.eo b/src/lib/evas/canvas/efl_canvas_text.eo index 1d401cdb52..e6c9cb0f70 100644 --- a/src/lib/evas/canvas/efl_canvas_text.eo +++ b/src/lib/evas/canvas/efl_canvas_text.eo @@ -9,6 +9,11 @@ struct Efl.Canvas.Text.Async_Layout_Event_Info h: int; } +struct Efl.Canvas.Text.Async_Text_Set_Rejected_Info +{ + text: string; +} + 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) { @@ -382,5 +387,6 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format, Efl.Text.Cursor, Efl.Text.Annota changed; [[Called when canvas text changed ]] style_insets,changed; [[Called when the property @.style_insets changed.]] async,layout,complete: Efl.Canvas.Text.Async_Layout_Event_Info; + async,text,set,rejected: Efl.Canvas.Text.Async_Text_Set_Rejected_Info; } } diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 0648635815..d7ce4ab252 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -14566,9 +14566,18 @@ _efl_canvas_text_cursor_text_append(Efl_Text_Cursor_Cursor *cur, } EOLIAN static void -_efl_canvas_text_efl_text_text_set(Eo *eo_obj, Efl_Canvas_Text_Data *o EINA_UNUSED, +_efl_canvas_text_efl_text_text_set(Eo *eo_obj, Efl_Canvas_Text_Data *o, const char *text) { + if (o->layout_busy) + { + Efl_Canvas_Text_Async_Text_Set_Rejected_Info info; + info.text = text; + efl_event_callback_call(eo_obj, + EFL_CANVAS_TEXT_EVENT_ASYNC_TEXT_SET_REJECTED, + &info); + return; + } evas_object_textblock_text_markup_set(eo_obj, ""); efl_text_cursor_text_insert(eo_obj, o->cursor, text); efl_event_callback_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CHANGED, NULL); @@ -15875,9 +15884,11 @@ struct _Async_Layout_Cb_Info static void _text_layout_async_done(void *todo, Ecore_Thread *thread EINA_UNUSED) { - Async_Layout_Cb_Info data; + Efl_Canvas_Text_Async_Layout_Event_Info data; + Text_Async_Data *td = todo; Ctxt *c = td->c; + Eo *obj = c->obj; Evas_Coord w_ret, h_ret; _layout_done(c, &w_ret, &h_ret); @@ -15907,16 +15918,15 @@ _text_layout_async_done(void *todo, Ecore_Thread *thread EINA_UNUSED) #endif #endif - data.w_ret = c->wmax; - data.h_ret = c->hmax; + data.w = c->wmax; + data.h = c->hmax; //TODO: callback event with ret: 0 x 0 - efl_event_callback_call(c->obj, EFL_CANVAS_TEXT_EVENT_ASYNC_LAYOUT_COMPLETE, &data); - // Cleanup c->o->layout_busy = EINA_FALSE; c->o->changed = EINA_TRUE; evas_object_change(c->obj, c->evas_o); free(c); free(td); + efl_event_callback_call(obj, EFL_CANVAS_TEXT_EVENT_ASYNC_LAYOUT_COMPLETE, &data); } static void @@ -15991,8 +16001,6 @@ _efl_canvas_text_async_layout(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o EI td->c = c; ecore_thread_run(_text_layout_async_do, _text_layout_async_done, NULL, td); - - // NOTE: Unlocks on async_done function } //#undef LKL |