genlist : item deleting focus set fixing properly
authorSangHyeon Lee <sh10233.lee@samsung.com>
Fri, 18 Nov 2016 10:20:10 +0000 (19:20 +0900)
committerJinYong Park <j4939.park@samsung.com>
Tue, 22 Nov 2016 10:46:57 +0000 (19:46 +0900)
Change-Id: Icbcf21eef161f4148027fb457e9d15ab31f05878

src/mobile_lib/elm_genlist.c

index 6491f25..775dc5e 100644 (file)
@@ -5936,21 +5936,30 @@ _item_free(Elm_Gen_Item *it)
      {
         Elm_Gen_Item *tmp;
         Eina_Bool find;
+        if (!elm_widget_focus_get(WIDGET(it))) goto failed;
+
         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);
+        if (find)
+          {
+             elm_object_item_focus_set(EO_OBJ(tmp), EINA_TRUE);
+             goto end;
+          }
         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
+             if (find)
                {
-                  elm_object_item_focus_set(it, EINA_FALSE);
-                  sd->focused_item = NULL;
+                  elm_object_item_focus_set(EO_OBJ(tmp), EINA_TRUE);
+                  goto end;
                }
           }
+failed:
+        elm_object_item_focus_set(EO_OBJ(it), EINA_FALSE);
+        sd->focused_item = NULL;
      }
+end:
    if (it == sd->key_down_item) sd->key_down_item = NULL;
    if (it == sd->highlighted_item) sd->highlighted_item = NULL;
 #ifndef TIZEN_PROFILE_WEARABLE