aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/elementary/efl_ui_win.c
diff options
context:
space:
mode:
authorMarcel Hollerbach <marcel@osg.samsung.com>2017-10-12 21:25:49 +0200
committerMarcel Hollerbach <marcel@osg.samsung.com>2017-10-13 12:31:47 +0200
commit75f5ea686fb6475cdbb9d8106c696c4d52fefe69 (patch)
tree9920fc63ea34e084592a633039f44495a2eede34 /src/lib/elementary/efl_ui_win.c
parentefl_ui_focus_manager_calc: make sure to not access out of bounds mem (diff)
downloadefl-75f5ea686fb6475cdbb9d8106c696c4d52fefe69.tar.gz
efl_ui_focus: add parent_provider
thats just a little helper, where the logic to find and fetch the provider is bound to the position in the widget tree, this means that for example gengrid could change the way the logical parent is evalulated. (For example to map the logical parent to a item)
Diffstat (limited to 'src/lib/elementary/efl_ui_win.c')
-rw-r--r--src/lib/elementary/efl_ui_win.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index bc66ecedf0..af94426b3f 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -176,6 +176,7 @@ struct _Efl_Ui_Win_Data
Evas_Object *main_menu;
Efl_Ui_Focus_Manager *manager;
+ Efl_Ui_Focus_Parent_Provider_Standard *provider;
struct
{
@@ -5361,6 +5362,7 @@ _efl_ui_win_efl_object_constructor(Eo *obj, Efl_Ui_Win_Data *pd)
pd->obj = obj;
pd->manager = elm_obj_widget_focus_manager_create(obj, obj);
+ pd->provider = efl_add(EFL_UI_FOCUS_PARENT_PROVIDER_STANDARD_CLASS, obj);
pd->profile.available = eina_array_new(4);
efl_composite_attach(obj, pd->manager);
@@ -6756,6 +6758,10 @@ _efl_ui_win_efl_object_provider_find(Eo *obj, Efl_Ui_Win_Data *pd EINA_UNUSED,
{
if (klass == EFL_UI_WIN_CLASS)
return obj;
+
+ if (klass == EFL_UI_FOCUS_PARENT_PROVIDER_INTERFACE)
+ return pd->provider;
+
return efl_provider_find(efl_super(obj, MY_CLASS), klass);
}