From 9af8000740417e9d10f0b4757e11c125e7d3da44 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Mon, 27 Apr 2009 01:29:02 +0000 Subject: [PATCH] always_select added to normal list too. SVN revision: 40406 --- legacy/elementary/src/bin/test.c | 1 + legacy/elementary/src/lib/Elementary.h.in | 1 + legacy/elementary/src/lib/elm_list.c | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/legacy/elementary/src/bin/test.c b/legacy/elementary/src/bin/test.c index f480f42b90..6c94677cac 100644 --- a/legacy/elementary/src/bin/test.c +++ b/legacy/elementary/src/bin/test.c @@ -3300,6 +3300,7 @@ my_win_main(void) evas_object_show(lb); li = elm_list_add(win); + elm_list_always_select_mode_set(li, 1); evas_object_size_hint_weight_set(li, 1.0, 1.0); evas_object_size_hint_align_set(li, -1.0, -1.0); elm_box_pack_end(bx0, li); diff --git a/legacy/elementary/src/lib/Elementary.h.in b/legacy/elementary/src/lib/Elementary.h.in index 5ba45cdc93..c417520d22 100644 --- a/legacy/elementary/src/lib/Elementary.h.in +++ b/legacy/elementary/src/lib/Elementary.h.in @@ -574,6 +574,7 @@ extern "C" { EAPI void elm_list_go(Evas_Object *obj); EAPI void elm_list_multi_select_set(Evas_Object *obj, Evas_Bool multi); EAPI void elm_list_horizontal_mode_set(Evas_Object *obj, Elm_List_Mode mode); + EAPI void elm_list_always_select_mode_set(Evas_Object *obj, Evas_Bool always_select); EAPI const Eina_List *elm_list_items_get(const Evas_Object *obj); EAPI Elm_List_Item *elm_list_selected_item_get(const Evas_Object *obj); EAPI const Eina_List *elm_list_selected_items_get(const Evas_Object *obj); diff --git a/legacy/elementary/src/lib/elm_list.c b/legacy/elementary/src/lib/elm_list.c index 87f477b42e..b00e33d779 100644 --- a/legacy/elementary/src/lib/elm_list.c +++ b/legacy/elementary/src/lib/elm_list.c @@ -12,6 +12,7 @@ struct _Widget_Data Evas_Coord minw[2], minh[2]; Evas_Bool on_hold : 1; Evas_Bool multi : 1; + Evas_Bool always_select : 1; }; struct _Elm_List_Item @@ -129,13 +130,18 @@ _item_select(Elm_List_Item *it) { Widget_Data *wd = elm_widget_data_get(it->obj); const char *selectraise; - if (it->selected) return; + if (it->selected) + { + if (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; wd->selected = eina_list_append(wd->selected, it); + call: if (it->func) it->func((void *)it->data, it->obj, it); evas_object_smart_callback_call(it->obj, "selected", it); } @@ -191,6 +197,7 @@ _mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info) Elm_List_Item *it2; EINA_LIST_FOREACH_SAFE(wd->selected, l, l_next, it2) if (it2 != it) _item_unselect(it2); + _item_select(it); } } } @@ -466,6 +473,13 @@ elm_list_horizontal_mode_set(Evas_Object *obj, Elm_List_Mode mode) elm_scroller_content_min_limit(wd->scroller, 0, 0); } +EAPI void +elm_list_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 const Eina_List * elm_list_items_get(const Evas_Object *obj) {