forked from enlightenment/efl
elm_toolbar: make the manager customisable
so the toolbar items can be registered correctly
This commit is contained in:
parent
ac703d8229
commit
124586c8e4
|
@ -14,20 +14,27 @@ typedef struct {
|
||||||
Eina_List *order, *targets_ordered;
|
Eina_List *order, *targets_ordered;
|
||||||
Eina_List *register_target, *registered_targets;
|
Eina_List *register_target, *registered_targets;
|
||||||
Eina_List *adapters;
|
Eina_List *adapters;
|
||||||
Efl_Ui_Focus_Manager *registered;
|
Efl_Ui_Focus_Manager *registered, *custom_manager;
|
||||||
Eina_Bool dirty;
|
Eina_Bool dirty;
|
||||||
} Efl_Ui_Focus_Composition_Data;
|
} Efl_Ui_Focus_Composition_Data;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_state_apply(Eo *obj, Efl_Ui_Focus_Composition_Data *pd)
|
_state_apply(Eo *obj, Efl_Ui_Focus_Composition_Data *pd)
|
||||||
{
|
{
|
||||||
|
Efl_Ui_Focus_Manager *manager;
|
||||||
|
|
||||||
|
if (pd->custom_manager)
|
||||||
|
manager = pd->custom_manager;
|
||||||
|
else
|
||||||
|
manager = pd->registered;
|
||||||
|
|
||||||
if (!pd->registered && pd->registered_targets)
|
if (!pd->registered && pd->registered_targets)
|
||||||
{
|
{
|
||||||
Efl_Ui_Focus_Object *o;
|
Efl_Ui_Focus_Object *o;
|
||||||
//remove all of them
|
//remove all of them
|
||||||
EINA_LIST_FREE(pd->registered_targets, o)
|
EINA_LIST_FREE(pd->registered_targets, o)
|
||||||
{
|
{
|
||||||
efl_ui_focus_manager_calc_unregister(pd->registered, o);
|
efl_ui_focus_manager_calc_unregister(manager, o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pd->registered)
|
else if (pd->registered)
|
||||||
|
@ -37,16 +44,16 @@ _state_apply(Eo *obj, Efl_Ui_Focus_Composition_Data *pd)
|
||||||
//remove all of them
|
//remove all of them
|
||||||
EINA_LIST_FREE(pd->registered_targets, o)
|
EINA_LIST_FREE(pd->registered_targets, o)
|
||||||
{
|
{
|
||||||
efl_ui_focus_manager_calc_unregister(pd->registered, o);
|
efl_ui_focus_manager_calc_unregister(manager, o);
|
||||||
}
|
}
|
||||||
|
|
||||||
EINA_LIST_FOREACH(pd->register_target, n, o)
|
EINA_LIST_FOREACH(pd->register_target, n, o)
|
||||||
{
|
{
|
||||||
efl_ui_focus_manager_calc_register(pd->registered, o, obj, NULL);
|
efl_ui_focus_manager_calc_register(manager, o, obj, NULL);
|
||||||
pd->registered_targets = eina_list_append(pd->registered_targets, o);
|
pd->registered_targets = eina_list_append(pd->registered_targets, o);
|
||||||
}
|
}
|
||||||
|
|
||||||
efl_ui_focus_manager_calc_update_order(pd->registered, obj, eina_list_clone(pd->targets_ordered));
|
efl_ui_focus_manager_calc_update_order(manager, obj, eina_list_clone(pd->targets_ordered));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,6 +162,19 @@ _efl_ui_focus_composition_efl_ui_focus_object_prepare_logical(Eo *obj, Efl_Ui_Fo
|
||||||
pd->dirty = EINA_FALSE;
|
pd->dirty = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EOLIAN static void
|
||||||
|
_efl_ui_focus_composition_custom_manager_set(Eo *obj EINA_UNUSED, Efl_Ui_Focus_Composition_Data *pd, Efl_Ui_Focus_Manager *custom_manager)
|
||||||
|
{
|
||||||
|
pd->custom_manager = custom_manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
EOLIAN static Efl_Ui_Focus_Manager*
|
||||||
|
_efl_ui_focus_composition_custom_manager_get(Eo *obj EINA_UNUSED, Efl_Ui_Focus_Composition_Data *pd)
|
||||||
|
{
|
||||||
|
return pd->custom_manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#include "efl_ui_focus_composition.eo.c"
|
#include "efl_ui_focus_composition.eo.c"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -29,6 +29,12 @@ mixin Efl.Ui.Focus.Composition (Efl.Interface, Elm.Widget ) {
|
||||||
You can use this function to call composition_elements.
|
You can use this function to call composition_elements.
|
||||||
]]
|
]]
|
||||||
}
|
}
|
||||||
|
@property custom_manager @protected {
|
||||||
|
[[Every widget will be registered in this manager]]
|
||||||
|
values {
|
||||||
|
custom_manager : Efl.Ui.Focus.Manager;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
implements {
|
implements {
|
||||||
Elm.Widget.focus_state_apply;
|
Elm.Widget.focus_state_apply;
|
||||||
|
|
|
@ -2966,6 +2966,8 @@ _elm_toolbar_efl_object_constructor(Eo *obj, Elm_Toolbar_Data *_pd EINA_UNUSED)
|
||||||
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
|
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
|
||||||
elm_interface_atspi_accessible_role_set(obj, ELM_ATSPI_ROLE_TOOL_BAR);
|
elm_interface_atspi_accessible_role_set(obj, ELM_ATSPI_ROLE_TOOL_BAR);
|
||||||
|
|
||||||
|
efl_ui_focus_composition_custom_manager_set(obj, obj);
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue