genlist: fixed wrong item focus set on item_focus_set API call.
authorDaniel Juyung Seo <seojuyung2@gmail.com>
Mon, 26 May 2014 12:56:10 +0000 (21:56 +0900)
committerDaniel Juyung Seo <seojuyung2@gmail.com>
Mon, 26 May 2014 13:08:13 +0000 (22:08 +0900)
Reset the last_focused_item on _item_focus_set_hook.
This fixes the issue which sets the focus to the wrong item when the
focus is set by an API.

Reproduction step:
elementary_test -> genlist focus -> click an item (not the 2nd item) -> click "Focus 2nd
Item after 1.5 seconds" button.
Focus is not moved to the 2nd item.

@fix

src/lib/elm_gengrid.c
src/lib/elm_genlist.c
src/lib/elm_list.c
src/lib/elm_toolbar.c

index 87e5005..11b7254 100644 (file)
@@ -2930,6 +2930,7 @@ _item_focus_set_hook(Elm_Object_Item *it, Eina_Bool focused)
 
    if (focused)
      {
+        sd->last_focused_item = it;
         if (!elm_object_focus_get(obj))
           elm_object_focus_set(obj, EINA_TRUE);
 
index 880b664..5f73def 100644 (file)
@@ -5670,6 +5670,7 @@ _item_focus_set_hook(Elm_Object_Item *it, Eina_Bool focused)
 
    if (focused)
      {
+        sd->last_focused_item = it;
         if (!elm_object_focus_get(obj))
           elm_object_focus_set(obj, EINA_TRUE);
 
index e7a8462..4eaa8e1 100644 (file)
@@ -1946,6 +1946,7 @@ _item_focus_set_hook(Elm_Object_Item *it, Eina_Bool focused)
 
    if (focused)
      {
+        sd->last_focused_item = it;
         if (!elm_object_focus_get(obj))
           elm_object_focus_set(obj, EINA_TRUE);
         if (it != sd->focused_item)
index 7607cdd..b9d5a09 100644 (file)
@@ -806,6 +806,7 @@ _item_focus_set_hook(Elm_Object_Item *it, Eina_Bool focused)
 
    if (focused)
      {
+        sd->last_focused_item = it;
         if (!elm_object_focus_get(obj))
           elm_object_focus_set(obj, EINA_TRUE);
         if (it != (Elm_Object_Item *)sd->focused_item)