always_select added to normal list too.

SVN revision: 40406
This commit is contained in:
Carsten Haitzler 2009-04-27 01:29:02 +00:00
parent 6eeaf7eb1a
commit 9af8000740
3 changed files with 17 additions and 1 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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)
{