summaryrefslogtreecommitdiff
path: root/src/lib/elementary/elc_ctxpopup.c
diff options
context:
space:
mode:
authorJEONGHYUN YUN <jh0506.yun@samsung.com>2017-08-10 14:12:08 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-08-10 14:42:08 +0900
commitbf0b3e0b75f5c6ebc5cb96211b3b21235422e358 (patch)
tree1a53d2dfc466f9088d890cb5697f130ade24ffd7 /src/lib/elementary/elc_ctxpopup.c
parent080c92658890bc3023aa2568c3f4679987a5154f (diff)
elm_ctxpopup: Add APIs to insert before/after item to a ctxpopup object.
Summary: There were only 2 APIs (item_append, item_prepend) for ctxpopup item add. Added more item add APIs (item_insert_before and item_insert_after) for convenience. Test Plan: 1. launch elementary_test - ctxpopup 2. click Ctxpopup with callback function sample 3. check whether there are 3 items on ctxpopup Reviewers: woohyun, Jaehyun, jpeg, cedric Reviewed By: jpeg Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D5004
Diffstat (limited to 'src/lib/elementary/elc_ctxpopup.c')
-rw-r--r--src/lib/elementary/elc_ctxpopup.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/lib/elementary/elc_ctxpopup.c b/src/lib/elementary/elc_ctxpopup.c
index 9b42539..ecf418f 100644
--- a/src/lib/elementary/elc_ctxpopup.c
+++ b/src/lib/elementary/elc_ctxpopup.c
@@ -1326,6 +1326,58 @@ _elm_ctxpopup_item_efl_object_constructor(Eo *obj, Elm_Ctxpopup_Item_Data *it)
1326} 1326}
1327 1327
1328EOLIAN static Elm_Object_Item* 1328EOLIAN static Elm_Object_Item*
1329_elm_ctxpopup_item_insert_before(Eo *obj, Elm_Ctxpopup_Data *sd, Elm_Object_Item *eo_before, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)
1330{
1331 Eo *eo_item;
1332
1333 EINA_SAFETY_ON_NULL_RETURN_VAL(eo_before, NULL);
1334 ELM_CTXPOPUP_ITEM_DATA_GET(eo_before, before_it);
1335 ELM_CTXPOPUP_ITEM_CHECK_OR_RETURN(before_it, NULL);
1336
1337 if (!before_it->list_item) return NULL;
1338
1339 eo_item = efl_add(ELM_CTXPOPUP_ITEM_CLASS, obj, elm_obj_ctxpopup_item_init(efl_added, func, data));
1340 if (!eo_item) return NULL;
1341
1342 ELM_CTXPOPUP_ITEM_DATA_GET(eo_item, item);
1343
1344 item->list_item =
1345 elm_list_item_insert_before(sd->list, before_it->list_item, label, icon, NULL, _item_wrap_cb, item);
1346 efl_ref(item->list_item);
1347 sd->items = eina_list_prepend_relative(sd->items, eo_item, eo_before);
1348
1349 if (sd->visible) elm_layout_sizing_eval(obj);
1350
1351 return eo_item;
1352}
1353
1354EOLIAN static Elm_Object_Item*
1355_elm_ctxpopup_item_insert_after(Eo *obj, Elm_Ctxpopup_Data *sd, Elm_Object_Item *eo_after, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)
1356{
1357 Eo *eo_item;
1358
1359 EINA_SAFETY_ON_NULL_RETURN_VAL(eo_after, NULL);
1360 ELM_CTXPOPUP_ITEM_DATA_GET(eo_after, after_it);
1361 ELM_CTXPOPUP_ITEM_CHECK_OR_RETURN(after_it, NULL);
1362
1363 if (!after_it->list_item) return NULL;
1364
1365 eo_item = efl_add(ELM_CTXPOPUP_ITEM_CLASS, obj, elm_obj_ctxpopup_item_init(efl_added, func, data));
1366 if (!eo_item) return NULL;
1367
1368 ELM_CTXPOPUP_ITEM_DATA_GET(eo_item, item);
1369
1370 item->list_item =
1371 elm_list_item_insert_after(sd->list, after_it->list_item, label, icon, NULL, _item_wrap_cb, item);
1372 efl_ref(item->list_item);
1373 sd->items = eina_list_append_relative(sd->items, eo_item, eo_after);
1374
1375 if (sd->visible) elm_layout_sizing_eval(obj);
1376
1377 return eo_item;
1378}
1379
1380EOLIAN static Elm_Object_Item*
1329_elm_ctxpopup_item_append(Eo *obj, Elm_Ctxpopup_Data *sd, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) 1381_elm_ctxpopup_item_append(Eo *obj, Elm_Ctxpopup_Data *sd, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)
1330{ 1382{
1331 Eo *eo_item; 1383 Eo *eo_item;