cedric pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=9c93021c1a37991e9b3f8c17d7b23bcad999bfc8
commit 9c93021c1a37991e9b3f8c17d7b23bcad999bfc8 Author: Woochan Lee <wc0917....@samsung.com> Date: Wed Jul 29 23:18:17 2015 +0200 multibuttonentry: add horizontal, vertical padding between items. Summary: There is no way to give padding between each items, previously. So i added horizontal, vertical padding here. I will add APIs for set, get padding size set, get. @feature Test Plan: Change the horizontal, vertical paddidng value in multibuttonentry.edc Run elementary_test Execute multibuttonentry sample. Add items. Check the padding between items. Reviewers: woohyun, seoz, Hermet, raster Reviewed By: Hermet, raster Subscribers: raster Differential Revision: https://phab.enlightenment.org/D2534 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- data/themes/edc/elm/multibuttonentry.edc | 3 +++ src/lib/elc_multibuttonentry.c | 40 +++++++++++++++++++++++++++++--- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/data/themes/edc/elm/multibuttonentry.edc b/data/themes/edc/elm/multibuttonentry.edc index 7c3f199..5c19209 100644 --- a/data/themes/edc/elm/multibuttonentry.edc +++ b/data/themes/edc/elm/multibuttonentry.edc @@ -1,4 +1,7 @@ group { name: "elm/multibuttonentry/base/default"; + data.item: "horizontal_pad" 0; + data.item: "vertical_pad" 0; + data.item: "closed_height" 0; parts { part { name: "box.swallow"; type: SWALLOW; description { state: "default" 0.0; diff --git a/src/lib/elc_multibuttonentry.c b/src/lib/elc_multibuttonentry.c index 8255e35..f1281e0 100644 --- a/src/lib/elc_multibuttonentry.c +++ b/src/lib/elc_multibuttonentry.c @@ -70,6 +70,8 @@ _format_count(int count, void *data EINA_UNUSED) EOLIAN static Eina_Bool _elm_multibuttonentry_elm_widget_theme_apply(Eo *obj, Elm_Multibuttonentry_Data *sd) { + const char *str; + int hpad = 0, vpad = 0; Eina_List *l; Elm_Object_Item *eo_item; @@ -77,6 +79,15 @@ _elm_multibuttonentry_elm_widget_theme_apply(Eo *obj, Elm_Multibuttonentry_Data eo_do_super(obj, MY_CLASS, int_ret = elm_obj_widget_theme_apply()); if (!int_ret) return EINA_FALSE; + str = elm_layout_data_get(obj, "horizontal_pad"); + if (str) hpad = atoi(str); + str = elm_layout_data_get(obj, "vertical_pad"); + if (str) vpad = atoi(str); + elm_box_padding_set + (sd->box, + hpad * elm_widget_scale_get(obj) * elm_config_scale_get(), + vpad * elm_widget_scale_get(obj) * elm_config_scale_get()); + EINA_LIST_FOREACH(sd->items, l, eo_item) { ELM_MULTIBUTTONENTRY_ITEM_DATA_GET(eo_item, item); @@ -924,10 +935,12 @@ _box_resize_cb(void *data, Evas_Coord w, h, mnw, mnh; Eina_List *l; Elm_Object_Item *eo_it; + int hpad; ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(data, sd); evas_object_geometry_get(sd->box, NULL, NULL, &w, &h); + elm_box_padding_get(obj, &hpad, NULL); if (sd->h_box < h) eo_do(sd->parent, eo_event_callback_call @@ -947,9 +960,9 @@ _box_resize_cb(void *data, evas_object_size_hint_min_get(VIEW(it), &mnw, &mnh); - if (mnw > w) + if (mnw > w - hpad) { - mnw = w; + mnw = w - hpad; evas_object_size_hint_min_set(VIEW(it), mnw, mnh); evas_object_resize(VIEW(it), mnw, mnh); } @@ -1259,8 +1272,11 @@ _box_min_size_calculate(Evas_Object *box, line_num++; } } + + if ((linew != 0) && (l != eina_list_last(priv->children))) + linew += priv->pad.h; } - minh = lineh * line_num; + minh = lineh * line_num + (line_num - 1) * priv->pad.v; evas_object_size_hint_min_set(box, minw, minh); *line_height = lineh; @@ -1334,6 +1350,7 @@ _box_layout_cb(Evas_Object *o, { xx = x; yy += hh; + yy += priv->pad.v; linew = ww; } @@ -1343,6 +1360,7 @@ _box_layout_cb(Evas_Object *o, evas_object_resize(obj, ow, oh); xx += ww; + xx += priv->pad.h; if (linew > w) { @@ -1351,18 +1369,34 @@ _box_layout_cb(Evas_Object *o, { xx = x; yy += hh; + yy += priv->pad.v; linew = 0; } } + if ((linew != 0) && (l != eina_list_last(priv->children))) + linew += priv->pad.h; } } static void _view_init(Evas_Object *obj, Elm_Multibuttonentry_Data *sd) { + const char *str; + int hpad = 0, vpad = 0; + sd->box = elm_box_add(obj); if (!sd->box) return; + + str = elm_layout_data_get(obj, "horizontal_pad"); + if (str) hpad = atoi(str); + str = elm_layout_data_get(obj, "vertical_pad"); + if (str) vpad = atoi(str); + elm_box_padding_set + (sd->box, + hpad * elm_widget_scale_get(obj) * elm_config_scale_get(), + vpad * elm_widget_scale_get(obj) * elm_config_scale_get()); + elm_box_layout_set(sd->box, _box_layout_cb, obj, NULL); elm_box_homogeneous_set(sd->box, EINA_FALSE); elm_layout_content_set(obj, "box.swallow", sd->box); --