~~Title: Efl.Ui.Focus.Manager~~ ====== Efl.Ui.Focus.Manager (interface) ====== ===== Description ===== %%Interface for managing focus objects.%% %%This interface is built in order to support movement of the focus property in a set of widgets. The movement of the focus property can happen in a tree manner, or a graph manner. The movement is also keeping track of the history of focused elements. The tree interpretation differentiates between logical and regular widgets: Logical widgets (typically containers) cannot receive focus, whereas Regular ones (like buttons) can.%% //Since 1.22// {{page>:develop:api-include:efl:ui:focus:manager:description&nouser&nolink&nodate}} ===== Members ===== **[[:develop:api:efl:ui:focus:manager:property:border_elements|border_elements]]** //**(get)**//\\ > Eina_Iterator *efl_ui_focus_manager_border_elements_get(const Eo *obj); \\ **[[:develop:api:efl:ui:focus:manager:method:dirty_logic_freeze|dirty_logic_freeze]]**\\ > %%Disables the cache invalidation when an object is moved.%% void efl_ui_focus_manager_dirty_logic_freeze(Eo *obj); \\ **[[:develop:api:efl:ui:focus:manager:method:dirty_logic_unfreeze|dirty_logic_unfreeze]]**\\ > %%Enables the cache invalidation when an object is moved.%% void efl_ui_focus_manager_dirty_logic_unfreeze(Eo *obj); \\ **[[:develop:api:efl:ui:focus:manager:method:fetch|fetch]]**\\ > %%Fetches the data from a registered node.%% Efl_Ui_Focus_Relations *efl_ui_focus_manager_fetch(Eo *obj, Efl_Ui_Focus_Object *child); \\ **[[:develop:api:efl:ui:focus:manager:method:logical_end|logical_end]]**\\ > %%Returns the last logical object.%% Efl_Ui_Focus_Manager_Logical_End_Detail efl_ui_focus_manager_logical_end(Eo *obj); \\ **[[:develop:api:efl:ui:focus:manager:property:manager_focus|manager_focus]]** //**(get, set)**//\\ > %%The element which is currently focused by this manager.%% Efl_Ui_Focus_Object *efl_ui_focus_manager_focus_get(const Eo *obj); void efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_Object *focus); \\ **[[:develop:api:efl:ui:focus:manager:method:move|move]]**\\ > %%Moves the focus in the given direction to the next regular widget.%% Efl_Ui_Focus_Object *efl_ui_focus_manager_move(Eo *obj, Efl_Ui_Focus_Direction direction); \\ **[[:develop:api:efl:ui:focus:manager:method:pop_history_stack|pop_history_stack]]**\\ > %%Removes the uppermost history element, and focuses the previous one.%% void efl_ui_focus_manager_pop_history_stack(Eo *obj); \\ **[[:develop:api:efl:ui:focus:manager:property:redirect|redirect]]** //**(get, set)**//\\ > %%Add another manager to serve the move requests.%% Efl_Ui_Focus_Manager *efl_ui_focus_manager_redirect_get(const Eo *obj); void efl_ui_focus_manager_redirect_set(Eo *obj, Efl_Ui_Focus_Manager *redirect); \\ **[[:develop:api:efl:ui:focus:manager:method:request_move|request_move]]**\\ > %%Returns the object in the %%''direction''%% from %%''child''%%.%% Efl_Ui_Focus_Object *efl_ui_focus_manager_request_move(Eo *obj, Efl_Ui_Focus_Direction direction, Efl_Ui_Focus_Object *child, Eina_Bool logical); \\ **[[:develop:api:efl:ui:focus:manager:method:request_subchild|request_subchild]]**\\ > %%Returns the widget in the direction next.%% Efl_Ui_Focus_Object *efl_ui_focus_manager_request_subchild(Eo *obj, Efl_Ui_Focus_Object *root); \\ **[[:develop:api:efl:ui:focus:manager:method:reset_history|reset_history]]**\\ > %%Resets the history stack of this manager object. This means the uppermost element will be unfocused, and all other elements will be removed from the remembered list.%% void efl_ui_focus_manager_reset_history(Eo *obj); \\ **[[:develop:api:efl:ui:focus:manager:property:root|root]]** //**(get, set)**//\\ > %%Root node for all logical sub-trees.%% Efl_Ui_Focus_Object *efl_ui_focus_manager_root_get(const Eo *obj); Eina_Bool efl_ui_focus_manager_root_set(Eo *obj, Efl_Ui_Focus_Object *root); \\ **[[:develop:api:efl:ui:focus:manager:method:setup_on_first_touch|setup_on_first_touch]]**\\ > %%Called when this manager is set as redirect.%% void efl_ui_focus_manager_setup_on_first_touch(Eo *obj, Efl_Ui_Focus_Direction direction, Efl_Ui_Focus_Object *entry); \\ **[[:develop:api:efl:ui:focus:manager:property:viewport_elements|viewport_elements]]** //**(get)**//\\ > Eina_Iterator *efl_ui_focus_manager_viewport_elements_get(const Eo *obj, Eina_Rect viewport); \\ ===== Events ===== **[[:develop:api:efl:ui:focus:manager:event:coords_dirty|coords,dirty]]**\\ > %%Cached relationship calculation results have been invalidated.%% EFL_UI_FOCUS_MANAGER_EVENT_COORDS_DIRTY(void) \\ **[[:develop:api:efl:ui:focus:manager:event:dirty_logic_freeze_changed|dirty_logic_freeze,changed]]**\\ > %%Called when this focus manager is frozen or thawed, even_info being %%''true''%% indicates that it is now frozen, %%''false''%% indicates that it is thawed.%% EFL_UI_FOCUS_MANAGER_EVENT_DIRTY_LOGIC_FREEZE_CHANGED(Eina_Bool) \\ **[[:develop:api:efl:ui:focus:manager:event:flush_pre|flush,pre]]**\\ > %%After this event, the manager object will calculate relations in the graph. Can be used to add / remove children in a lazy fashion.%% EFL_UI_FOCUS_MANAGER_EVENT_FLUSH_PRE(void) \\ **[[:develop:api:efl:ui:focus:manager:event:manager_focus_changed|manager_focus,changed]]**\\ > %%The manager_focus property has changed. The previously focused object is passed as an event argument.%% EFL_UI_FOCUS_MANAGER_EVENT_MANAGER_FOCUS_CHANGED(Efl_Ui_Focus_Object *) \\ **[[:develop:api:efl:ui:focus:manager:event:redirect_changed|redirect,changed]]**\\ > %%Redirect object has changed, the old manager is passed as an event argument.%% EFL_UI_FOCUS_MANAGER_EVENT_REDIRECT_CHANGED(Efl_Ui_Focus_Manager *) \\