From ab50a85937dff1b14f7f8e46820ec7e7808319e0 Mon Sep 17 00:00:00 2001 From: Amitesh Singh Date: Tue, 3 Feb 2015 15:47:32 +0900 Subject: [PATCH] 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 --- legacy/elementary/src/lib/elm_gengrid.c | 9 ++++++++- legacy/elementary/src/lib/elm_genlist.c | 9 ++++++++- legacy/elementary/src/lib/elm_list.c | 6 ++++++ legacy/elementary/src/lib/elm_toolbar.c | 6 ++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/legacy/elementary/src/lib/elm_gengrid.c b/legacy/elementary/src/lib/elm_gengrid.c index 9f951f72bc..f6506f5a2d 100644 --- a/legacy/elementary/src/lib/elm_gengrid.c +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_genlist.c b/legacy/elementary/src/lib/elm_genlist.c index e242f8222d..13cb1ed9e3 100644 --- a/legacy/elementary/src/lib/elm_genlist.c +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_list.c b/legacy/elementary/src/lib/elm_list.c index f9b405efc5..709e00efc5 100644 --- a/legacy/elementary/src/lib/elm_list.c +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_toolbar.c b/legacy/elementary/src/lib/elm_toolbar.c index 94320d33d8..650819349f 100644 --- a/legacy/elementary/src/lib/elm_toolbar.c +++ b/legacy/elementary/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); }