gengrid : Fix the issue to skip disable item in item select

Summary:
Fix to skip the item which is disabled and select the next item to the
         disabled item
         @fix

Reviewers: seoz, raster

CC: seoz, singh.amitesh

Differential Revision: https://phab.enlightenment.org/D700
This commit is contained in:
nirajkr 2014-05-14 20:50:11 +09:00 committed by Carsten Haitzler (Rasterman)
parent 933e88f782
commit 495fe1462c
1 changed files with 52 additions and 42 deletions

View File

@ -1753,32 +1753,28 @@ static Eina_Bool
_item_single_select_up(Elm_Gengrid_Data *sd)
{
unsigned int i;
Elm_Gen_Item *prev;
Elm_Object_Item *prev;
if (!sd->selected)
{
prev = ELM_GEN_ITEM_FROM_INLIST(sd->items->last);
while ((prev) && (prev->generation < sd->generation))
prev = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(prev)->prev);
elm_gengrid_item_selected_set((Elm_Object_Item *)prev, EINA_TRUE);
return EINA_TRUE;
}
prev = (Elm_Object_Item *)ELM_GEN_ITEM_FROM_INLIST(sd->items->last);
else
prev = (Elm_Gen_Item *)elm_gengrid_item_prev_get(sd->last_selected_item);
prev = sd->last_selected_item;
while (prev)
{
for (i = 0; i < sd->nmax; i++)
{
prev = elm_gengrid_item_prev_get((Elm_Object_Item *)prev);
if (!prev) return EINA_FALSE;
}
if (!elm_object_item_disabled_get(prev)) break;
}
if (!prev) return EINA_FALSE;
for (i = 1; i < sd->nmax; i++)
{
Elm_Object_Item *tmp =
elm_gengrid_item_prev_get((Elm_Object_Item *)prev);
if (!tmp) return EINA_FALSE;
prev = (Elm_Gen_Item *)tmp;
}
_all_items_deselect(sd);
elm_gengrid_item_selected_set((Elm_Object_Item *)prev, EINA_TRUE);
elm_gengrid_item_selected_set(prev, EINA_TRUE);
return EINA_TRUE;
}
@ -1787,32 +1783,28 @@ static Eina_Bool
_item_single_select_down(Elm_Gengrid_Data *sd)
{
unsigned int i;
Elm_Gen_Item *next;
Elm_Object_Item *next;
if (!sd->selected)
{
next = ELM_GEN_ITEM_FROM_INLIST(sd->items);
while ((next) && (next->generation < sd->generation))
next = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(next)->next);
elm_gengrid_item_selected_set((Elm_Object_Item *)next, EINA_TRUE);
return EINA_TRUE;
}
next = (Elm_Object_Item *)ELM_GEN_ITEM_FROM_INLIST(sd->items);
else
next = (Elm_Gen_Item *)elm_gengrid_item_next_get(sd->last_selected_item);
next = sd->last_selected_item;
while (next)
{
for (i = 0; i < sd->nmax; i++)
{
next = elm_gengrid_item_next_get((Elm_Object_Item *)next);
if (!next) return EINA_FALSE;
}
if (!elm_object_item_disabled_get(next)) break;
}
if (!next) return EINA_FALSE;
for (i = 1; i < sd->nmax; i++)
{
Elm_Object_Item *tmp =
elm_gengrid_item_next_get((Elm_Object_Item *)next);
if (!tmp) return EINA_FALSE;
next = (Elm_Gen_Item *)tmp;
}
_all_items_deselect(sd);
elm_gengrid_item_selected_set((Elm_Object_Item *)next, EINA_TRUE);
elm_gengrid_item_selected_set(next, EINA_TRUE);
return EINA_TRUE;
}
@ -1825,11 +1817,20 @@ _item_single_select_left(Elm_Gengrid_Data *sd)
if (!sd->selected)
{
prev = ELM_GEN_ITEM_FROM_INLIST(sd->items->last);
while ((prev) && (prev->generation < sd->generation))
while ((prev) && (prev->generation < sd->generation)
&& elm_object_item_disabled_get((Elm_Object_Item *)prev))
prev = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(prev)->prev);
}
else
prev = (Elm_Gen_Item *)elm_gengrid_item_prev_get(sd->last_selected_item);
{
prev = (Elm_Gen_Item *)elm_gengrid_item_prev_get(sd->last_selected_item);
while (prev)
{
if (!elm_object_item_disabled_get((Elm_Object_Item *)prev))
break;
prev = (Elm_Gen_Item *)elm_gengrid_item_prev_get((Elm_Object_Item *)prev);
}
}
if (!prev) return EINA_FALSE;
@ -1848,11 +1849,20 @@ _item_single_select_right(Elm_Gengrid_Data *sd)
if (!sd->selected)
{
next = ELM_GEN_ITEM_FROM_INLIST(sd->items);
while ((next) && (next->generation < sd->generation))
while ((next) && (next->generation < sd->generation)
&& elm_object_item_disabled_get((Elm_Object_Item *)next))
next = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(next)->next);
}
else
next = (Elm_Gen_Item *)elm_gengrid_item_next_get(sd->last_selected_item);
{
next = (Elm_Gen_Item *)elm_gengrid_item_next_get(sd->last_selected_item);
while (next)
{
if (!elm_object_item_disabled_get((Elm_Object_Item *)next))
break;
next = (Elm_Gen_Item *)elm_gengrid_item_next_get((Elm_Object_Item *)next);
}
}
if (!next) return EINA_FALSE;