elementary: introduce helper functions for the redirects

This commit is contained in:
Marcel Hollerbach 2016-12-23 13:48:46 +01:00
parent 74b4327746
commit fb6c37f16f
7 changed files with 26 additions and 11 deletions

View File

@ -215,15 +215,13 @@ _efl_ui_focus_manager_sub_efl_object_parent_set(Eo *obj, Efl_Ui_Focus_Manager_Su
old_parent = efl_parent_get(obj);
efl_event_callback_forwarder_del(obj, EFL_UI_FOCUS_MANAGER_EVENT_PRE_FLUSH, old_parent);
efl_event_callback_forwarder_del(obj, EFL_UI_FOCUS_MANAGER_EVENT_REDIRECT_CHANGED, old_parent);
_efl_ui_focus_manager_redirect_events_del(obj, old_parent);
efl_event_callback_array_del(old_parent, self_manager(), obj);
efl_parent_set(efl_super(obj, MY_CLASS), parent);
new_parent = efl_parent_get(obj);
efl_event_callback_forwarder_add(obj, EFL_UI_FOCUS_MANAGER_EVENT_PRE_FLUSH, new_parent);
efl_event_callback_forwarder_add(obj, EFL_UI_FOCUS_MANAGER_EVENT_REDIRECT_CHANGED, new_parent);
_efl_ui_focus_manager_redirect_events_add(obj, new_parent);
efl_event_callback_array_add(new_parent, self_manager(), obj);
}

View File

@ -10,7 +10,7 @@ class Efl.Ui.Focus.Manager.Sub (Efl.Ui.Focus.Manager, Efl.Object)
This class is only working as composite object to a Efl.Ui.Focus.User and Efl.Ui.Focus.Object.
The object itself does redirect the managers settings to the object where this object is attached
The object itself does redirect the managers events to the object where this object is attached
]]
methods {
}

View File

@ -5249,8 +5249,7 @@ _efl_ui_win_efl_object_constructor(Eo *obj, Efl_Ui_Win_Data *pd)
efl_composite_attach(obj, pd->manager);
efl_event_callback_forwarder_add(pd->manager, EFL_UI_FOCUS_MANAGER_EVENT_PRE_FLUSH, obj);
efl_event_callback_forwarder_add(pd->manager, EFL_UI_FOCUS_MANAGER_EVENT_REDIRECT_CHANGED, obj);
_efl_ui_focus_manager_redirect_events_add(pd->manager, obj);
return obj;
}

View File

@ -4662,10 +4662,6 @@ _elm_interface_scrollable_efl_object_constructor(Eo *obj, Elm_Scrollable_Smart_I
efl_composite_attach(obj, pd->manager);
efl_event_callback_forwarder_add(pd->manager, EFL_UI_FOCUS_MANAGER_EVENT_REDIRECT_CHANGED, obj);
efl_event_callback_forwarder_add(pd->manager, EFL_UI_FOCUS_MANAGER_EVENT_PRE_FLUSH , obj);
efl_event_callback_forwarder_add(pd->manager, EFL_UI_FOCUS_MANAGER_EVENT_COORDS_DIRTY , obj);
efl_event_callback_forwarder_add(pd->manager, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, obj);
efl_event_callback_add(pd->manager, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, _focused_element, obj);
return efl_constructor(efl_super(obj, MY_SCROLLABLE_INTERFACE));

View File

@ -31,6 +31,24 @@
static Elm_Version _version = { VMAJ, VMIN, VMIC, VREV };
EAPI Elm_Version *elm_version = &_version;
void
_efl_ui_focus_manager_redirect_events_del(Efl_Ui_Focus_Manager *manager, Eo *obj)
{
efl_event_callback_forwarder_del(manager, EFL_UI_FOCUS_MANAGER_EVENT_PRE_FLUSH, obj);
efl_event_callback_forwarder_del(manager, EFL_UI_FOCUS_MANAGER_EVENT_REDIRECT_CHANGED, obj);
efl_event_callback_forwarder_del(manager, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED , obj);
efl_event_callback_forwarder_del(manager, EFL_UI_FOCUS_MANAGER_EVENT_COORDS_DIRTY, obj);
}
void
_efl_ui_focus_manager_redirect_events_add(Efl_Ui_Focus_Manager *manager, Eo *obj)
{
efl_event_callback_forwarder_add(manager, EFL_UI_FOCUS_MANAGER_EVENT_PRE_FLUSH, obj);
efl_event_callback_forwarder_add(manager, EFL_UI_FOCUS_MANAGER_EVENT_REDIRECT_CHANGED, obj);
efl_event_callback_forwarder_add(manager, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED , obj);
efl_event_callback_forwarder_add(manager, EFL_UI_FOCUS_MANAGER_EVENT_COORDS_DIRTY, obj);
}
Eina_Bool
_elm_dangerous_call_check(const char *call)
{

View File

@ -814,6 +814,7 @@ _elm_menu_efl_object_constructor(Eo *obj, Elm_Menu_Data *sd)
);
efl_composite_attach(obj, manager);
_efl_ui_focus_manager_redirect_events_add(manager, obj);
}
obj = efl_constructor(efl_super(obj, MY_CLASS));

View File

@ -540,6 +540,9 @@ void _elm_menu_menu_bar_hide(Eo *obj);
void _elm_win_wl_cursor_set(Evas_Object *obj, const char *cursor);
#endif
void _efl_ui_focus_manager_redirect_events_del(Efl_Ui_Focus_Manager *manager, Eo *obj);
void _efl_ui_focus_manager_redirect_events_add(Efl_Ui_Focus_Manager *manager, Eo *obj);
/* DEPRECATED, will be removed on next release */
void _elm_icon_signal_emit(Evas_Object *obj,
const char *emission,