return (Elm_List_Item *)eina_list_data_get(tmp);
}
-static void _item_focused_next(Elm_List_Smart_Data *sd, int dir)
+static Eina_Bool _item_focused_next(Elm_List_Smart_Data *sd, int dir)
{
- Elm_List_Item *it = NULL;
+ Elm_List_Item *it = NULL, *old_focused = NULL;
if (elm_widget_focus_get(ELM_WIDGET_DATA(sd)->obj))
edje_object_signal_emit
(ELM_WIDGET_DATA(sd)->resize_obj, "elm,state,unfocused", "elm");
+ old_focused = sd->focused;
+
if (!sd->focused)
{
if (dir == 1)
it = _item_focused_search(it, dir);
}
_item_focused(it);
+
+ if (old_focused == sd->focused)
+ return EINA_FALSE;
+ else
+ return EINA_TRUE;
}
}
else
{
- _item_focused_next(sd, -1);
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- return EINA_TRUE;
+ if (_item_focused_next(sd, -1))
+ {
+ ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
+ return EINA_TRUE;
+ }
+ else
+ return EINA_FALSE;
}
}
else if ((!strcmp(ev->keyname, "Down")) ||
}
else
{
- _item_focused_next(sd, 1);
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- return EINA_TRUE;
+ if (_item_focused_next(sd, 1))
+ {
+ ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
+ return EINA_TRUE;
+ }
+ else
+ return EINA_FALSE;
}
}
else if ((!strcmp(ev->keyname, "Home")) ||