efl_ui_focus_composition: support beeing a pure logical composition

This commit is contained in:
Marcel Hollerbach 2017-10-16 17:19:42 +02:00
parent 6f95bded51
commit 38d41b4a2b
2 changed files with 22 additions and 1 deletions

View File

@ -16,6 +16,7 @@ typedef struct {
Eina_List *adapters;
Efl_Ui_Focus_Manager *registered, *custom_manager;
Eina_Bool dirty;
Eina_Bool logical;
} Efl_Ui_Focus_Composition_Data;
static void
@ -49,7 +50,10 @@ _state_apply(Eo *obj, Efl_Ui_Focus_Composition_Data *pd)
EINA_LIST_FOREACH(pd->register_target, n, o)
{
efl_ui_focus_manager_calc_register(manager, o, obj, NULL);
if (!pd->logical)
efl_ui_focus_manager_calc_register(manager, o, obj, NULL);
else
efl_ui_focus_manager_calc_register_logical(manager, o, obj, NULL);
pd->registered_targets = eina_list_append(pd->registered_targets, o);
}
@ -180,6 +184,17 @@ _efl_ui_focus_composition_custom_manager_get(Eo *obj EINA_UNUSED, Efl_Ui_Focus_C
return pd->custom_manager;
}
EOLIAN static void
_efl_ui_focus_composition_logical_mode_set(Eo *obj EINA_UNUSED, Efl_Ui_Focus_Composition_Data *pd, Eina_Bool logical_mode)
{
pd->logical = logical_mode;
}
EOLIAN static Eina_Bool
_efl_ui_focus_composition_logical_mode_get(Eo *obj EINA_UNUSED, Efl_Ui_Focus_Composition_Data *pd)
{
return pd->logical;
}
#include "efl_ui_focus_composition.eo.c"

View File

@ -39,6 +39,12 @@ mixin Efl.Ui.Focus.Composition (Efl.Interface, Elm.Widget ) {
custom_manager : Efl.Ui.Focus.Manager;
}
}
@property logical_mode @protected {
[[Set to true if all children should be registered as logicals]]
values {
logical_mode : bool; [[$true or $false]]
}
}
}
implements {
Elm.Widget.focus_state_apply;