From ba03692c26c6d5666188fedfe85fece2ec45c6d1 Mon Sep 17 00:00:00 2001 From: Kim Shinwoo Date: Fri, 6 Jul 2012 07:08:16 +0000 Subject: [PATCH] From: Kim Shinwoo Subject: [E-devel] [patch][elementary] diskselector, duplicate icon for rounded item minor fix to diskselector to repeat icons right. The diskselector has round mode which can be set by elm_diskselector_round_enabled_set(). In case of round mode is enabled, the icon does not display properly because diskselector replace the icon for the additional items - not copy and paste. To enable round mode, diskselector adds over/under itmes(additional itmes) by using normal mode items. So there is a icon to set two places in diskselector. But diskselector does not duplicate the icon.. this makes item without icon but there should be.. I'm not sure the best way to duplicate icon. SVN revision: 73397 --- src/lib/elm_diskselector.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/lib/elm_diskselector.c b/src/lib/elm_diskselector.c index 67047d8..e08f068 100644 --- a/src/lib/elm_diskselector.c +++ b/src/lib/elm_diskselector.c @@ -846,6 +846,21 @@ _round_items_del(Widget_Data *wd) wd->over_items = eina_list_free(wd->over_items); } +static Evas_Object * +_duplicate_icon(Evas_Object *icon) +{ + Evas_Object *ic; + const char *file; + const char *group; + + elm_image_file_get(icon, &file, &group); + ic = elm_icon_add(icon); + elm_image_file_set(ic, file,group); + elm_image_resizable_set(ic, 1, 1); + + return ic; +} + static void _round_items_add(Widget_Data *wd) { @@ -858,7 +873,7 @@ _round_items_add(Widget_Data *wd) if (!wd->first) { - wd->first = _item_new(WIDGET(it), it->icon, it->label, it->func, + wd->first = _item_new(WIDGET(it), _duplicate_icon(it->icon), it->label, it->func, it->base.data); wd->first->node = it->node; wd->r_items = eina_list_append(wd->r_items, wd->first); @@ -869,7 +884,7 @@ _round_items_add(Widget_Data *wd) it = dit; if (!wd->second) { - wd->second = _item_new(WIDGET(it), it->icon, it->label, it->func, + wd->second = _item_new(WIDGET(it), _duplicate_icon(it->icon), it->label, it->func, it->base.data); wd->second->node = it->node; wd->r_items = eina_list_append(wd->r_items, wd->second); @@ -880,7 +895,7 @@ _round_items_add(Widget_Data *wd) { it = eina_list_nth(wd->items, i); if (!it) it = dit; - temp_it = _item_new(WIDGET(it), it->icon, it->label, it->func, it->base.data); + temp_it = _item_new(WIDGET(it), _duplicate_icon(it->icon), it->label, it->func, it->base.data); wd->over_items = eina_list_append(wd->over_items, temp_it); wd->r_items = eina_list_append(wd->r_items, temp_it); } @@ -890,7 +905,7 @@ _round_items_add(Widget_Data *wd) it = dit; if (!wd->last) { - wd->last = _item_new(WIDGET(it), it->icon, it->label, it->func, + wd->last = _item_new(WIDGET(it), _duplicate_icon(it->icon), it->label, it->func, it->base.data); wd->last->node = it->node; wd->r_items = eina_list_prepend(wd->r_items, wd->last); @@ -901,7 +916,7 @@ _round_items_add(Widget_Data *wd) it = dit; if (!wd->s_last) { - wd->s_last = _item_new(WIDGET(it), it->icon, it->label, it->func, + wd->s_last = _item_new(WIDGET(it), _duplicate_icon(it->icon), it->label, it->func, it->base.data); wd->s_last->node = it->node; wd->r_items = eina_list_prepend(wd->r_items, wd->s_last); @@ -912,7 +927,7 @@ _round_items_add(Widget_Data *wd) { it = eina_list_nth(wd->items, wd->item_count - i); if (!it) it = dit; - temp_it = _item_new(WIDGET(it), it->icon, it->label, it->func, it->base.data); + temp_it = _item_new(WIDGET(it), _duplicate_icon(it->icon), it->label, it->func, it->base.data); wd->under_items = eina_list_append(wd->under_items, temp_it); wd->r_items = eina_list_prepend(wd->r_items, temp_it); } -- 2.7.4