diff options
author | Tom Hacohen <tom@stosb.com> | 2019-10-03 15:14:15 +0300 |
---|---|---|
committer | Tom Hacohen <tom@stosb.com> | 2019-10-12 17:52:19 +0300 |
commit | 67b4faf65e08fbed97efcfb97abc566222432dc5 (patch) | |
tree | 21e488c4c4d4ce1ed7b728c466570a9116512037 | |
parent | 8a9ba302d5c011c1270f2b1cb56c5b2111548edb (diff) | |
download | efl-67b4faf65e08fbed97efcfb97abc566222432dc5.tar.gz |
Automatically update layout on obstacle changes.
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_text.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/lib/evas/canvas/efl_canvas_text.c b/src/lib/evas/canvas/efl_canvas_text.c index 33e0edb94d..dabe19c1d6 100644 --- a/src/lib/evas/canvas/efl_canvas_text.c +++ b/src/lib/evas/canvas/efl_canvas_text.c @@ -7353,9 +7353,20 @@ _obstacle_del_cb(void *data, const Efl_Event *event) } static void +_obstacle_update_cb(void *data, const Efl_Event *event EINA_UNUSED) +{ + Eo *eo_obj = data; + Efl2_Canvas_Text_Data *obj = efl_data_scope_get(eo_obj, MY_CLASS); + _evas_textblock_changed(obj, eo_obj); + obj->obstacle_changed = EINA_TRUE; +} + +static void _obstacle_clear(Eo *eo_obj, Evas_Textblock_Obstacle *obs) { efl_event_callback_del(obs->eo_obs, EFL_EVENT_DEL, _obstacle_del_cb, eo_obj); + efl_event_callback_del(obs->eo_obs, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _obstacle_update_cb, eo_obj); + efl_event_callback_del(obs->eo_obs, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _obstacle_update_cb, eo_obj); } static void @@ -7392,6 +7403,8 @@ _efl2_canvas_text_obstacle_add(Eo *eo_obj, obs->eo_obs = eo_obs; efl_event_callback_add(eo_obs, EFL_EVENT_DEL, _obstacle_del_cb, eo_obj); + efl_event_callback_add(eo_obs, EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _obstacle_update_cb, eo_obj); + efl_event_callback_add(eo_obs, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _obstacle_update_cb, eo_obj); o->obstacles = eina_list_append(o->obstacles, obs); _obstacle_update(obs, eo_obj); @@ -7425,14 +7438,6 @@ _efl2_canvas_text_obstacle_remove(Eo *eo_obj, Efl2_Canvas_Text_Data *o, return EINA_TRUE; } -// FIXME: we need to add events on obstacle move/resize events and just call this one automatically instead of it being manual -EOLIAN static void -_efl_canvas_text_obstacles_update(Eo *eo_obj, Efl2_Canvas_Text_Data *obj) -{ - _evas_textblock_changed(obj, eo_obj); - obj->obstacle_changed = EINA_TRUE; -} - static Evas_Textblock_Obstacle * _layout_item_obstacle_get(Ctxt *c, Evas_Object_Textblock_Item *it) { |