From e60c6a7c91b1ddcdda894b4c2786990f37ca744b Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 9 Aug 2012 11:54:37 +0000 Subject: [PATCH] fix selection handling in list if items disabled. SVN revision: 75041 --- src/lib/elm_list.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c index fdc6c11..d5f6e4b 100644 --- a/src/lib/elm_list.c +++ b/src/lib/elm_list.c @@ -144,7 +144,15 @@ _item_single_select_up(Elm_List_Smart_Data *sd) Elm_Object_Item *prev; if (!sd->selected) prev = eina_list_data_get(eina_list_last(sd->items)); - else prev = elm_list_item_prev(sd->last_selected_item); + else + { + prev = elm_list_item_prev(sd->last_selected_item); + while (prev) + { + if (!elm_object_item_disabled_get(prev)) break; + prev = elm_list_item_prev(prev); + } + } if (!prev) return EINA_FALSE; _all_items_unselect(sd); @@ -161,7 +169,15 @@ _item_single_select_down(Elm_List_Smart_Data *sd) Elm_Object_Item *next; if (!sd->selected) next = eina_list_data_get(sd->items); - else next = elm_list_item_next(sd->last_selected_item); + else + { + next = elm_list_item_next(sd->last_selected_item); + while (next) + { + if (!elm_object_item_disabled_get(next)) break; + next = elm_list_item_next(next); + } + } if (!next) return EINA_FALSE; _all_items_unselect(sd); -- 2.7.4