summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <marcel-hollerbach@t-online.de>2016-12-21 11:41:55 +0100
committerMarcel Hollerbach <marcel-hollerbach@t-online.de>2017-04-19 13:32:00 +0200
commit4f3fc443d42471b684215daa9028a358a12dc9e7 (patch)
tree9db26aef499fd528599313d3fa47c64c3bda0883
parent7d42e2b1df1adb1986b89c3c8ad5031a7812565c (diff)
downloadefl-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.c3
-rw-r--r--src/lib/elementary/elm_widget.c22
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);
}
/**