forked from enlightenment/efl
list - fix item disable and infinite loop on next select
This commit is contained in:
parent
caaf444d9b
commit
4f4982663c
|
@ -1025,8 +1025,9 @@ _item_unhighlight(Elm_List_Item *it)
|
||||||
obj = WIDGET(it);
|
obj = WIDGET(it);
|
||||||
ELM_LIST_DATA_GET(obj, sd);
|
ELM_LIST_DATA_GET(obj, sd);
|
||||||
|
|
||||||
if ((!it->highlighted) || (it->base.disabled) ||
|
// if ((!it->highlighted) || (it->base.disabled) ||
|
||||||
(sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)) return;
|
// (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)) return;
|
||||||
|
if (!it->highlighted) return;
|
||||||
|
|
||||||
evas_object_ref(obj);
|
evas_object_ref(obj);
|
||||||
_elm_list_walk(sd);
|
_elm_list_walk(sd);
|
||||||
|
@ -1055,8 +1056,8 @@ _item_unselect(Elm_List_Item *it)
|
||||||
obj = WIDGET(it);
|
obj = WIDGET(it);
|
||||||
ELM_LIST_DATA_GET(obj, sd);
|
ELM_LIST_DATA_GET(obj, sd);
|
||||||
|
|
||||||
if (it->base.disabled || (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE))
|
// if (it->base.disabled || (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE))
|
||||||
return;
|
// return;
|
||||||
|
|
||||||
evas_object_ref(obj);
|
evas_object_ref(obj);
|
||||||
_elm_list_walk(sd);
|
_elm_list_walk(sd);
|
||||||
|
@ -1071,7 +1072,9 @@ _item_unselect(Elm_List_Item *it)
|
||||||
{
|
{
|
||||||
it->selected = EINA_FALSE;
|
it->selected = EINA_FALSE;
|
||||||
sd->selected = eina_list_remove(sd->selected, it);
|
sd->selected = eina_list_remove(sd->selected, it);
|
||||||
evas_object_smart_callback_call(WIDGET(it), SIG_UNSELECTED, it);
|
if (!(it->base.disabled ||
|
||||||
|
(sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)))
|
||||||
|
evas_object_smart_callback_call(WIDGET(it), SIG_UNSELECTED, it);
|
||||||
}
|
}
|
||||||
|
|
||||||
_elm_list_unwalk(obj, sd);
|
_elm_list_unwalk(obj, sd);
|
||||||
|
@ -1316,8 +1319,11 @@ _mouse_up_cb(void *data,
|
||||||
{
|
{
|
||||||
while (sd->selected)
|
while (sd->selected)
|
||||||
{
|
{
|
||||||
_item_unhighlight(sd->selected->data);
|
Elm_List_Item *it2 = sd->selected->data;
|
||||||
_item_unselect(sd->selected->data);
|
sd->selected = eina_list_remove_list
|
||||||
|
(sd->selected, sd->selected);
|
||||||
|
_item_unhighlight(it2);
|
||||||
|
_item_unselect(it2);
|
||||||
}
|
}
|
||||||
_item_highlight(it);
|
_item_highlight(it);
|
||||||
_item_select(it);
|
_item_select(it);
|
||||||
|
@ -1347,6 +1353,8 @@ _item_disable_hook(Elm_Object_Item *it)
|
||||||
{
|
{
|
||||||
Elm_List_Item *item = (Elm_List_Item *)it;
|
Elm_List_Item *item = (Elm_List_Item *)it;
|
||||||
|
|
||||||
|
_item_unhighlight(item);
|
||||||
|
_item_unselect(item);
|
||||||
if (item->base.disabled)
|
if (item->base.disabled)
|
||||||
edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm");
|
edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm");
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue