efl_ui_frame: migrate to new focus system

when collapsed the subtree is unfocusable
This commit is contained in:
Marcel Hollerbach 2016-12-21 11:41:55 +01:00
parent 7c35606d06
commit d481dd58ec
2 changed files with 25 additions and 0 deletions

View File

@ -135,6 +135,7 @@ _on_frame_clicked(void *data,
elm_layout_signal_emit(data, "elm,action,toggle", "elm");
sd->collapsed++;
sd->anim = EINA_TRUE;
elm_widget_tree_unfocusable_set(data, sd->collapsed);
}
efl_event_callback_legacy_call
(data, EFL_UI_EVENT_CLICKED, NULL);
@ -234,6 +235,7 @@ _efl_ui_frame_collapse_set(Eo *obj, Efl_Ui_Frame_Data *sd, Eina_Bool collapse)
sd->collapsed = !!collapse;
sd->anim = EINA_FALSE;
elm_widget_tree_unfocusable_set(obj, sd->collapsed);
_sizing_eval(obj, sd);
}
@ -249,6 +251,7 @@ _efl_ui_frame_collapse_go(Eo *obj, Efl_Ui_Frame_Data *sd, Eina_Bool collapse)
efl_event_callback_legacy_call
(wd->resize_obj, EDJE_OBJECT_EVENT_RECALC, obj);
sd->collapsed = collapse;
elm_widget_tree_unfocusable_set(obj, sd->collapsed);
sd->anim = EINA_TRUE;
}

View File

@ -1702,6 +1702,25 @@ _elm_widget_child_can_focus_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd)
return sd->child_can_focus;
}
static void
_full_eval_children(Eo *obj, Elm_Widget_Smart_Data *sd)
{
Eina_List *l;
Eo *child;
_full_eval(obj, sd);
EINA_LIST_FOREACH(sd->subobjs , l, child)
{
Elm_Widget_Smart_Data *sd_child;
if (!efl_isa(child, ELM_WIDGET_CLASS)) continue;
sd_child = efl_data_scope_get(child, ELM_WIDGET_CLASS);
_full_eval_children(child, sd_child);
}
}
/**
* @internal
*
@ -1724,6 +1743,9 @@ _elm_widget_tree_unfocusable_set(Eo *obj, Elm_Widget_Smart_Data *sd, Eina_Bool t
if (sd->tree_unfocusable == tree_unfocusable) return;
sd->tree_unfocusable = tree_unfocusable;
elm_widget_focus_tree_unfocusable_handle(obj);
//focus state eval on all children
_full_eval_children(obj, sd);
}
/**