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;
|
||||
}
|
||||
|
||||
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
|
||||
_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)
|
||||
_elm_access_highlight_set(obj);
|
||||
|
||||
if (o) _child_focus_order_update(o, obj);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue