List: Focus does not move if it's set on item content object.
authorefl <chinmaya@efl.(none)>
Wed, 11 Jun 2014 05:14:28 +0000 (14:14 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Wed, 11 Jun 2014 05:14:28 +0000 (14:14 +0900)
Summary:
If focus is set on item content object, it's treated as a
different object which results the focus deadlock. So, every
time whenever focus sets on item content object, we need to
unset and set the focus on genlist object. Thanks to Seoz for
the idea.

Test Plan: elementary_test -to "list focus"

Reviewers: seoz, SanghyeonLee, eagleeye

CC: seoz
Differential Revision: https://phab.enlightenment.org/D973

src/lib/elm_list.c

index e6c94df..c1053f3 100644 (file)
@@ -1330,6 +1330,19 @@ _item_select(Elm_List_Item *it)
 
    if (it->base.disabled || (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE))
      return;
+   if (!sd->focus_on_selection_enabled && (it->icon || it->end))
+     {
+        if (elm_object_widget_check(it->icon) && elm_object_focus_get(it->icon))
+          {
+             elm_object_focus_set(obj, EINA_FALSE);
+             elm_object_focus_set(obj, EINA_TRUE);
+          }
+        else if (elm_object_widget_check(it->end) && elm_object_focus_get(it->end))
+          {
+             elm_object_focus_set(obj, EINA_FALSE);
+             elm_object_focus_set(obj, EINA_TRUE);
+          }
+     }
    if (it->selected)
      {
         if (sd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS) goto call;