genlist: add new focus move policy when item deleted
authorSangHyeon Lee <sh10233.lee@samsung.com>
Fri, 18 Nov 2016 02:37:48 +0000 (11:37 +0900)
committerJinYong Park <j4939.park@samsung.com>
Tue, 22 Nov 2016 10:46:57 +0000 (19:46 +0900)
Change-Id: I2719e47eadd71ab0c215a854793cbd6851b28a10
Signed-off-by: SangHyeon Lee <sh10233.lee@samsung.com>
src/mobile_lib/elm_genlist.c

index e6d0d1e03f17bacc19946f9d92feb8f283c96989..6491f25c3e221eaca50975b95ec866b7c342b6ea 100644 (file)
@@ -5934,8 +5934,22 @@ _item_free(Elm_Gen_Item *it)
    if (it->selected) _item_unselect(it);
    if (it == sd->focused_item)
      {
-        elm_object_item_focus_set(EO_OBJ(it), EINA_FALSE);
-        sd->focused_item = NULL;
+        Elm_Gen_Item *tmp;
+        Eina_Bool find;
+        tmp = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
+        find = _item_focusable_search(&tmp, 1);
+        if (find) elm_object_item_focus_set(tmp, EINA_TRUE);
+        else
+          {
+             tmp = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev);
+             find = _item_focusable_search(&tmp, -1);
+             if (find) elm_object_item_focus_set(tmp, EINA_TRUE);
+             else
+               {
+                  elm_object_item_focus_set(it, EINA_FALSE);
+                  sd->focused_item = NULL;
+               }
+          }
      }
    if (it == sd->key_down_item) sd->key_down_item = NULL;
    if (it == sd->highlighted_item) sd->highlighted_item = NULL;