eunue pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=bfce85d1634c6e3615b32475cd601f03649d821f
commit bfce85d1634c6e3615b32475cd601f03649d821f Author: Jaeun Choi <[email protected]> Date: Thu Jan 24 18:42:24 2019 +0900 efl_page_indicator: add unpack function --- src/lib/elementary/efl_page_indicator.c | 19 +++++++++++++++++- src/lib/elementary/efl_page_indicator_icon.c | 29 +++++++++++++++++++++++++++- src/lib/elementary/elm_priv.h | 1 + 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/efl_page_indicator.c b/src/lib/elementary/efl_page_indicator.c index 9f8aeeb33c..57cd2bf9f9 100644 --- a/src/lib/elementary/efl_page_indicator.c +++ b/src/lib/elementary/efl_page_indicator.c @@ -29,6 +29,19 @@ _efl_page_indicator_pack(Eo *obj EINA_UNUSED, if ((pd->curr_idx == -1) || (pd->curr_idx >= index)) pd->curr_idx++; } +EOLIAN static void +_efl_page_indicator_unpack(Eo *obj EINA_UNUSED, + Efl_Page_Indicator_Data *pd, + int index) +{ + pd->cnt--; + + if ((pd->cnt == 0) || + ((index == pd->curr_idx) && (index != 0)) || + (index < pd->curr_idx)) + pd->curr_idx--; +} + EOLIAN static void _efl_page_indicator_bind(Eo *obj EINA_UNUSED, Efl_Page_Indicator_Data *pd, @@ -57,11 +70,15 @@ EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_update, EFL_FUNC_CALL(pos), double pos) EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_pack, EFL_FUNC_CALL(index), int index) +EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_unpack, + EFL_FUNC_CALL(index), int index) #define EFL_PAGE_INDICATOR_EXTRA_OPS \ EFL_OBJECT_OP_FUNC(efl_page_indicator_update, \ _efl_page_indicator_update), \ EFL_OBJECT_OP_FUNC(efl_page_indicator_pack, \ - _efl_page_indicator_pack) + _efl_page_indicator_pack), \ + EFL_OBJECT_OP_FUNC(efl_page_indicator_unpack, \ + _efl_page_indicator_unpack) #include "efl_page_indicator.eo.c" diff --git a/src/lib/elementary/efl_page_indicator_icon.c b/src/lib/elementary/efl_page_indicator_icon.c index 993ddfda45..0c7f939fb1 100644 --- a/src/lib/elementary/efl_page_indicator_icon.c +++ b/src/lib/elementary/efl_page_indicator_icon.c @@ -79,6 +79,31 @@ _efl_page_indicator_icon_pack(Eo *obj, } } +EOLIAN static void +_efl_page_indicator_icon_unpack(Eo *obj, + Efl_Page_Indicator_Icon_Data *pd, + int index) +{ + EFL_PAGE_INDICATOR_DATA_GET(obj, spd); + Eo *item; + + item = eina_list_nth(pd->items, index); + pd->items = eina_list_remove(pd->items, item); + efl_pack_unpack(spd->idbox, item); + efl_del(item); + + if (index == spd->curr_idx) pd->curr = NULL; + + efl_page_indicator_unpack(efl_super(obj, MY_CLASS), index); + + if ((pd->curr == NULL) && (spd->curr_idx != -1)) + { + pd->curr = eina_list_nth(pd->items, spd->curr_idx); + eina_value_set(pd->v, 1.0); + efl_layout_signal_message_send(pd->curr, 1, *(pd->v)); + } +} + EOLIAN static void _efl_page_indicator_icon_efl_page_indicator_bind(Eo *obj, Efl_Page_Indicator_Icon_Data *pd, @@ -135,6 +160,8 @@ _efl_page_indicator_icon_efl_page_indicator_bind(Eo *obj, EFL_OBJECT_OP_FUNC(efl_page_indicator_update, \ _efl_page_indicator_icon_update), \ EFL_OBJECT_OP_FUNC(efl_page_indicator_pack, \ - _efl_page_indicator_icon_pack) + _efl_page_indicator_icon_pack), \ + EFL_OBJECT_OP_FUNC(efl_page_indicator_unpack, \ + _efl_page_indicator_icon_unpack) #include "efl_page_indicator_icon.eo.c" diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index 2de703ca2c..0fd36df9a2 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -779,6 +779,7 @@ EOAPI Eina_Bool efl_page_transition_loop_set(Eo *obj, Efl_Ui_Pager_Loop loop); EOAPI void efl_page_indicator_update(Eo *obj, double pos); EOAPI void efl_page_indicator_pack(Eo *obj, int index); +EOAPI void efl_page_indicator_unpack(Eo *obj, int index); Eina_Bool _elm_config_accel_preference_parse(const char *pref, Eina_Stringshare **accel, int *gl_depth, int *gl_stencil, int *gl_msaa); --
