forked from enlightenment/efl
elm_widget: update child object focus_order.
Summary: _parent_focus() when called recursively updates the sd->focus_order for parent obeject only. The sibling's sd->focus_order not get updated. So updated the focus_order for siblings. Signed-off-by: Umesh Tanwar <umesh.tanwar@samsung.com> Test Plan: {F30149} correct case: 1. Press Enter key on click button. A popoup will come. 2. Pressing enter key on popup button the popup hides and focus goes back to click button. issue case: 1. Press Enter key on click button. A popoup will come. 2. press Alt+tab twice. 3. Pressing enter key on popup button the popup hides and focus does not go back to click button. Reviewers: raster, cedric Subscribers: singh.amitesh Differential Revision: https://phab.enlightenment.org/D3807
This commit is contained in:
parent
a0f37fad24
commit
1adb1962de
|
@ -791,6 +791,27 @@ _elm_widget_focus_highlight_style_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data
|
||||||
return sd->focus_highlight_style;
|
return sd->focus_highlight_style;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_child_focus_order_update(Evas_Object* parent, Evas_Object* obj)
|
||||||
|
{
|
||||||
|
const Eina_List *l;
|
||||||
|
Evas_Object *child;
|
||||||
|
ELM_WIDGET_DATA_GET(parent, sdp);
|
||||||
|
EINA_LIST_FOREACH(sdp->subobjs, l, child)
|
||||||
|
{
|
||||||
|
if (!_elm_widget_is(child) || (child == obj)) continue;
|
||||||
|
ELM_WIDGET_DATA_GET(child,sdc);
|
||||||
|
|
||||||
|
if(sdc->can_focus || (sdc->child_can_focus))
|
||||||
|
{
|
||||||
|
focus_order++;
|
||||||
|
sdc->focus_order = focus_order;
|
||||||
|
}
|
||||||
|
_child_focus_order_update(child, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_parent_focus(Evas_Object *obj, Elm_Object_Item *item)
|
_parent_focus(Evas_Object *obj, Elm_Object_Item *item)
|
||||||
{
|
{
|
||||||
|
@ -820,6 +841,8 @@ _parent_focus(Evas_Object *obj, Elm_Object_Item *item)
|
||||||
|
|
||||||
if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
|
if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
|
||||||
_elm_access_highlight_set(obj);
|
_elm_access_highlight_set(obj);
|
||||||
|
|
||||||
|
if (o) _child_focus_order_update(o, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue