diff options
author | Marcel Hollerbach <marcel-hollerbach@t-online.de> | 2016-12-21 11:41:55 +0100 |
---|---|---|
committer | Marcel Hollerbach <marcel-hollerbach@t-online.de> | 2017-04-19 13:32:00 +0200 |
commit | 4f3fc443d42471b684215daa9028a358a12dc9e7 (patch) | |
tree | 9db26aef499fd528599313d3fa47c64c3bda0883 | |
parent | 7d42e2b1df1adb1986b89c3c8ad5031a7812565c (diff) | |
download | efl-4f3fc443d42471b684215daa9028a358a12dc9e7.tar.gz |
efl_ui_frame: migrate to new focus system
when collapsed the subtree is unfocusable
-rw-r--r-- | src/lib/elementary/efl_ui_frame.c | 3 | ||||
-rw-r--r-- | src/lib/elementary/elm_widget.c | 22 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/lib/elementary/efl_ui_frame.c b/src/lib/elementary/efl_ui_frame.c index 6c453d42e6..e0568f5c06 100644 --- a/src/lib/elementary/efl_ui_frame.c +++ b/src/lib/elementary/efl_ui_frame.c @@ -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; } diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index 33df392438..6745de3145 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -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); } /** |