seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=a3e0ebf41f2723b5516cce760d46592940bab53b
commit a3e0ebf41f2723b5516cce760d46592940bab53b Author: Amitesh Singh <amitesh...@samsung.com> Date: Tue Feb 3 15:47:32 2015 +0900 list/genlist/gengrid/toolbar: set focus/unfocus on item when focus is actually set on widget. Summary: @Fix Reviewers: raster, Hermet, seoz Reviewed By: seoz Subscribers: seoz Differential Revision: https://phab.enlightenment.org/D1918 --- src/lib/elm_gengrid.c | 9 ++++++++- src/lib/elm_genlist.c | 9 ++++++++- src/lib/elm_list.c | 6 ++++++ src/lib/elm_toolbar.c | 6 ++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index 9f951f7..f6506f5 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -3411,6 +3411,9 @@ _elm_gengrid_item_elm_widget_item_focus_set(Eo *eo_it, Elm_Gen_Item *it, Eina_Bo if (!elm_object_focus_get(obj)) elm_object_focus_set(obj, EINA_TRUE); + if (!elm_widget_focus_get(obj)) + return; + if (eo_it != sd->focused_item) { if (sd->focused_item) @@ -3423,7 +3426,11 @@ _elm_gengrid_item_elm_widget_item_focus_set(Eo *eo_it, Elm_Gen_Item *it, Eina_Bo } } else - _elm_gengrid_item_unfocused(eo_it); + { + if (!elm_widget_focus_get(obj)) + return; + _elm_gengrid_item_unfocused(eo_it); + } } EOLIAN static Eina_Bool diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index e242f82..13cb1ed 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -5711,6 +5711,9 @@ _elm_genlist_item_elm_widget_item_focus_set(Eo *eo_it, Elm_Gen_Item *it, Eina_Bo if (!elm_object_focus_get(obj)) elm_object_focus_set(obj, EINA_TRUE); + if (!elm_widget_focus_get(obj)) + return; + if (eo_it != sd->focused_item) { if (sd->focused_item) @@ -5723,7 +5726,11 @@ _elm_genlist_item_elm_widget_item_focus_set(Eo *eo_it, Elm_Gen_Item *it, Eina_Bo } } else - _elm_genlist_item_unfocused(eo_it); + { + if (!elm_widget_focus_get(obj)) + return; + _elm_genlist_item_unfocused(eo_it); + } } EOLIAN static Eina_Bool diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c index f9b405e..709e00e 100644 --- a/src/lib/elm_list.c +++ b/src/lib/elm_list.c @@ -2121,6 +2121,10 @@ _elm_list_item_elm_widget_item_focus_set(Eo *eo_it, Elm_List_Item_Data *it, Eina sd->last_focused_item = eo_it; if (!elm_object_focus_get(obj)) elm_object_focus_set(obj, EINA_TRUE); + + if (!elm_widget_focus_get(obj)) + return; + if (eo_it != sd->focused_item) { if (sd->focused_item) @@ -2130,6 +2134,8 @@ _elm_list_item_elm_widget_item_focus_set(Eo *eo_it, Elm_List_Item_Data *it, Eina } else { + if (!elm_widget_focus_get(obj)) + return; if (eo_it) _elm_list_item_unfocused(eo_it); } diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c index 94320d3..6508193 100644 --- a/src/lib/elm_toolbar.c +++ b/src/lib/elm_toolbar.c @@ -827,6 +827,10 @@ _elm_toolbar_item_elm_widget_item_focus_set(Eo *eo_it, Elm_Toolbar_Item_Data *it sd->last_focused_item = eo_it; if (!elm_object_focus_get(obj)) elm_object_focus_set(obj, EINA_TRUE); + + if (!elm_widget_focus_get(obj)) + return; + if (eo_it != sd->focused_item) { if (sd->focused_item) @@ -836,6 +840,8 @@ _elm_toolbar_item_elm_widget_item_focus_set(Eo *eo_it, Elm_Toolbar_Item_Data *it } else { + if (!elm_widget_focus_get(obj)) + return; if (eo_it) _elm_toolbar_item_unfocused(eo_it); } --