From eb997134d0bd1c2442f7396f956f970851d73be2 Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Thu, 19 Oct 2017 13:29:03 +0200 Subject: [PATCH] efl_ui_focus_parent_provider_gen: looks to get the last widget before gengrid This means we are garanteed to find the item --- src/lib/elementary/efl_ui_focus_parent_provider_gen.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/efl_ui_focus_parent_provider_gen.c b/src/lib/elementary/efl_ui_focus_parent_provider_gen.c index b93271b..ad1ed62 100644 --- a/src/lib/elementary/efl_ui_focus_parent_provider_gen.c +++ b/src/lib/elementary/efl_ui_focus_parent_provider_gen.c @@ -49,9 +49,19 @@ EOLIAN static Efl_Ui_Focus_Object* _efl_ui_focus_parent_provider_gen_efl_ui_focus_parent_provider_find_logical_parent(Eo *obj EINA_UNUSED, Efl_Ui_Focus_Parent_Provider_Gen_Data *pd EINA_UNUSED, Efl_Ui_Focus_Object *widget) { //first check if this item is in the map - Elm_Widget_Item *item; + Elm_Widget_Item *item, *above_gengrid = widget; - item = eina_hash_find(pd->map, &widget); + if (elm_widget_parent_widget_get(widget) != pd->container) + { + Elm_Widget *parent = elm_widget_parent_widget_get(widget); + //move forward so we get the last widget above the gengrid level, this may be the widget out of the map + do { + above_gengrid = parent; + parent = elm_widget_parent_widget_get(above_gengrid); + } while(parent && parent != pd->container); + } + + item = eina_hash_find(pd->map, &above_gengrid); efl_ui_focus_composition_elements_flush(pd->container); -- 2.7.4