From af12fa8bb29fa3456efda14476bc41221c8bf32e Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 23 Apr 2009 08:51:07 +0000 Subject: [PATCH] a bunch of adds and improvements around gnelist SVN revision: 40323 --- legacy/elementary/data/themes/default.edc | 70 +++++++++++------------ legacy/elementary/src/bin/test.c | 1 + legacy/elementary/src/lib/Elementary.h.in | 3 + legacy/elementary/src/lib/elm_genlist.c | 24 +++++++- 4 files changed, 62 insertions(+), 36 deletions(-) diff --git a/legacy/elementary/data/themes/default.edc b/legacy/elementary/data/themes/default.edc index 82dc9ca749..b1b5690ff6 100644 --- a/legacy/elementary/data/themes/default.edc +++ b/legacy/elementary/data/themes/default.edc @@ -7097,6 +7097,15 @@ collections { image: "ilist_item_shadow.png" COMP; } parts { + part { + name: "event"; + type: RECT; + repeat_events: 1; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + } part { name: "base_sh"; mouse_events: 0; @@ -7303,15 +7312,6 @@ collections { color: 255 255 255 64; } } - part { - name: "event"; - type: RECT; - repeat_events: 1; - description { - state: "default" 0.0; - color: 0 0 0 0; - } - } } programs { // signal: elm,state,%s,active @@ -7370,6 +7370,14 @@ collections { image: "ilist_2.png" COMP; } parts { + part { name: "event"; + type: RECT; + repeat_events: 1; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + } part { name: "base"; mouse_events: 0; @@ -7552,14 +7560,6 @@ collections { color: 255 255 255 64; } } - part { name: "event"; - type: RECT; - repeat_events: 1; - description { - state: "default" 0.0; - color: 0 0 0 0; - } - } } programs { // signal: elm,state,%s,active @@ -7622,6 +7622,15 @@ collections { image: "icon_arrow_down.png" COMP; } parts { + part { + name: "event"; + type: RECT; + repeat_events: 1; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + } part { name: "base_sh"; mouse_events: 0; @@ -7852,15 +7861,6 @@ collections { color: 255 255 255 64; } } - part { - name: "event"; - type: RECT; - repeat_events: 1; - description { - state: "default" 0.0; - color: 0 0 0 0; - } - } } programs { // signal: elm,state,%s,active @@ -7941,6 +7941,15 @@ collections { image: "icon_arrow_down.png" COMP; } parts { + part { + name: "event"; + type: RECT; + repeat_events: 1; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + } part { name: "base"; mouse_events: 0; @@ -8147,15 +8156,6 @@ collections { color: 255 255 255 64; } } - part { - name: "event"; - type: RECT; - repeat_events: 1; - description { - state: "default" 0.0; - color: 0 0 0 0; - } - } } programs { // signal: elm,state,%s,active diff --git a/legacy/elementary/src/bin/test.c b/legacy/elementary/src/bin/test.c index 48cee8d828..daf6e3a91c 100644 --- a/legacy/elementary/src/bin/test.c +++ b/legacy/elementary/src/bin/test.c @@ -2531,6 +2531,7 @@ Evas_Object *gl3_icon_get(const void *data, Evas_Object *obj, const char *part) { Evas_Object *ck; ck = elm_check_add(obj); + evas_object_propagate_events_set(ck, 0); elm_check_state_set(ck, tit->onoff); evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed, data); evas_object_show(ck); diff --git a/legacy/elementary/src/lib/Elementary.h.in b/legacy/elementary/src/lib/Elementary.h.in index 17ebf4ab01..643194eb6f 100644 --- a/legacy/elementary/src/lib/Elementary.h.in +++ b/legacy/elementary/src/lib/Elementary.h.in @@ -641,6 +641,7 @@ extern "C" { EAPI Elm_Genlist_Item *elm_genlist_item_insert_before(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *before, Elm_Genlist_Item_Flags flags, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *func_data); EAPI Elm_Genlist_Item *elm_genlist_item_insert_after(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *after, Elm_Genlist_Item_Flags flags, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *func_data); EAPI void elm_genlist_clear(Evas_Object *obj); + EAPI void elm_genlist_multi_select_set(Evas_Object *obj, Evas_Bool multi); EAPI Elm_Genlist_Item *elm_genlist_selected_item_get(const Evas_Object *obj); EAPI const Eina_List *elm_genlist_selected_items_get(const Evas_Object *obj); EAPI Elm_Genlist_Item *elm_genlist_first_item_get(const Evas_Object *obj); @@ -661,6 +662,8 @@ extern "C" { EAPI const void *elm_genlist_item_data_get(const Elm_Genlist_Item *item); EAPI void elm_genlist_item_update(Elm_Genlist_Item *item); EAPI void elm_genlist_horizontal_mode_set(Evas_Object *obj, Elm_List_Mode mode); + EAPI void elm_genlist_always_select_mode_set(Evas_Object *obj, Evas_Bool always_select); + EAPI void elm_genlist_multi_select_set(Evas_Object *obj, Evas_Bool multi); /* smart callbacks called: * "clicked" - when the user double-clicked an item * "selected" - when the user selected an item diff --git a/legacy/elementary/src/lib/elm_genlist.c b/legacy/elementary/src/lib/elm_genlist.c index 0595467b18..0637f70588 100644 --- a/legacy/elementary/src/lib/elm_genlist.c +++ b/legacy/elementary/src/lib/elm_genlist.c @@ -24,6 +24,8 @@ struct _Widget_Data Evas_Bool multi : 1; Evas_Bool min_w : 1; Evas_Bool min_h : 1; + Evas_Bool always_select : 1; + Evas_Bool no_select : 1; }; struct _Item_Block @@ -196,14 +198,20 @@ static void _item_select(Elm_Genlist_Item *it) { const char *selectraise; + if (it->wd->no_select) return; if (it->delete_me) return; - if (it->selected) return; + if (it->selected) + { + if (it->wd->always_select) goto call; + return; + } edje_object_signal_emit(it->base, "elm,state,selected", "elm"); selectraise = edje_object_data_get(it->base, "selectraise"); if ((selectraise) && (!strcmp(selectraise, "on"))) evas_object_raise(it->base); it->selected = 1; it->wd->selected = eina_list_append(it->wd->selected, it); + call: if (it->func.func) it->func.func((void *)it->func.data, it->wd->obj, it); evas_object_smart_callback_call(it->wd->obj, "selected", it); } @@ -1442,3 +1450,17 @@ elm_genlist_horizontal_mode_set(Evas_Object *obj, Elm_List_Mode mode) else elm_scroller_content_min_limit(wd->scr, 0, 0); } + +EAPI void +elm_genlist_always_select_mode_set(Evas_Object *obj, Evas_Bool always_select) +{ + Widget_Data *wd = elm_widget_data_get(obj); + wd->always_select = always_select; +} + +EAPI void +elm_genlist_no_select_mode_set(Evas_Object *obj, Evas_Bool no_select) +{ + Widget_Data *wd = elm_widget_data_get(obj); + wd->no_select = no_select; +}