Tizen Native API  4.0
Focus

An Elementary application has, at all times, one (and only one) focused object. This is what determines where the input events go to within the application's window. Also, focused objects can be decorated differently, in order to signal to the user where the input is, at a given moment.

Elementary applications also have the concept of focus chain: one can cycle through all the windows' focusable objects by input (tab key) or programmatically. The default focus chain for an application is the one define by the order in which the widgets where added in code. One will cycle through top level widgets, and, for each one containing sub-objects, cycle through them all, before returning to the level above. Elementary also allows one to set custom focus chains for their applications.

Besides the focused decoration a widget may exhibit, when it gets focus, Elementary has a global focus highlight object that can be enabled for a window. If one chooses to do so, this extra highlight effect will surround the current focused object, too.

Note:
Some Elementary widgets are unfocusable, after creation, by their very nature: they are not meant to be interacted with input events, but are there just for visual purposes.

Functions

Elm_Focus_Autoscroll_Mode elm_config_focus_autoscroll_mode_get (void)
void elm_config_focus_autoscroll_mode_set (Elm_Focus_Autoscroll_Mode mode)
Eina_Bool elm_config_focus_highlight_enabled_get (void)
void elm_config_focus_highlight_enabled_set (Eina_Bool enable)
Eina_Bool elm_config_focus_highlight_animate_get (void)
void elm_config_focus_highlight_animate_set (Eina_Bool animate)
Eina_Bool elm_config_focus_highlight_clip_disabled_get (void)
void elm_config_focus_highlight_clip_disabled_set (Eina_Bool disable)
Elm_Focus_Move_Policy elm_config_focus_move_policy_get (void)
void elm_config_focus_move_policy_set (Elm_Focus_Move_Policy policy)
Eina_Bool elm_config_item_select_on_focus_disabled_get (void)
void elm_config_item_select_on_focus_disabled_set (Eina_Bool disabled)
Eina_Bool elm_config_first_item_focus_on_first_focusin_get (void)
void elm_config_first_item_focus_on_first_focusin_set (Eina_Bool enabled)
Eina_Bool elm_object_focus_get (const Evas_Object *obj)
void elm_object_focus_set (Evas_Object *obj, Eina_Bool focus)
void elm_object_focus_allow_set (Evas_Object *obj, Eina_Bool enable)
Eina_Bool elm_object_focus_allow_get (const Evas_Object *obj)
void elm_object_focus_custom_chain_set (Evas_Object *obj, Eina_List *objs)
void elm_object_focus_custom_chain_unset (Evas_Object *obj)
const Eina_Listelm_object_focus_custom_chain_get (const Evas_Object *obj)
void elm_object_focus_custom_chain_append (Evas_Object *obj, Evas_Object *child, Evas_Object *relative_child)
void elm_object_focus_custom_chain_prepend (Evas_Object *obj, Evas_Object *child, Evas_Object *relative_child)
void elm_object_focus_next (Evas_Object *obj, Elm_Focus_Direction dir)
Evas_Objectelm_object_focus_next_object_get (const Evas_Object *obj, Elm_Focus_Direction dir)
void elm_object_focus_next_object_set (Evas_Object *obj, Evas_Object *next, Elm_Focus_Direction dir)
Evas_Objectelm_object_focused_object_get (const Evas_Object *obj)
void elm_object_tree_focus_allow_set (Evas_Object *obj, Eina_Bool focusable)
Eina_Bool elm_object_tree_focus_allow_get (const Evas_Object *obj)
Eina_Bool elm_object_focus_highlight_style_set (Evas_Object *obj, const char *style)
const char * elm_object_focus_highlight_style_get (const Evas_Object *obj)
void elm_object_focus_move_policy_set (Evas_Object *obj, Elm_Focus_Move_Policy policy)
Elm_Focus_Move_Policy elm_object_focus_move_policy_get (const Evas_Object *obj)
void elm_object_focus_region_show_mode_set (Evas_Object *obj, Elm_Focus_Region_Show_Mode mode)
Elm_Focus_Region_Show_Mode elm_object_focus_region_show_mode_get (const Evas_Object *obj)
Eina_Bool elm_object_focus_move_policy_automatic_get (const Evas_Object *obj)
void elm_object_focus_move_policy_automatic_set (Evas_Object *obj, Eina_Bool automatic)
Elm_Object_Itemelm_object_focused_item_get (const Evas_Object *obj)
Elm_Object_Itemelm_object_focus_next_item_get (const Evas_Object *obj, Elm_Focus_Direction dir)
void elm_object_focus_next_item_set (Evas_Object *obj, Elm_Object_Item *next_item, Elm_Focus_Direction dir)
EINA_DEPRECATED void elm_object_focus (Evas_Object *obj)
EINA_DEPRECATED void elm_object_unfocus (Evas_Object *obj)
EINA_DEPRECATED void elm_object_focus_direction_go (Evas_Object *obj, int x, int y)

Enumeration Type Documentation

Focus Autoscroll Mode

Since (EFL) :
1.10
Enumerator:
ELM_FOCUS_AUTOSCROLL_MODE_SHOW 

directly show the focused region or item automatically

ELM_FOCUS_AUTOSCROLL_MODE_NONE 

do not show the focused region or item automatically

ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN 

bring_in the focused region or item automatically which might invole the scrolling

Focus Movement Policy

Since (EFL) :
1.10
Enumerator:
ELM_FOCUS_MOVE_POLICY_CLICK 

move focus by mouse click or touch. Elementary focus is set on mouse click and this is checked at mouse up time. (default)

ELM_FOCUS_MOVE_POLICY_IN 

move focus by mouse in. Elementary focus is set on mouse move when the mouse pointer is moved into an object.

ELM_FOCUS_MOVE_POLICY_KEY_ONLY 

move focus by key. Elementary focus is set on key input like Left, Right, Up, Down, Tab, or Shift+Tab.

Focus region show mode.

Enumerator:
ELM_FOCUS_REGION_SHOW_WIDGET 

as a widget

ELM_FOCUS_REGION_SHOW_ITEM 

as an item


Function Documentation

Get status of first item focus on first focusin feature.

Returns:
The first item focus on first focusin status
See also:
elm_config_first_item_focus_on_first_focusin_set
Since (EFL) :
1.11
Since :
3.0

Set the first item focus on first focusin feature.

Parameters:
enabledfirst_item_focus_on_first_focusin if EINA_TRUE, enable otherwise
See also:
elm_config_first_item_focus_on_first_focusin_get
Since (EFL) :
1.11
Since :
3.0

Get focus auto scroll mode.

When a region or an item is focused and it resides inside any scroller, elementary will automatically scroll the focused area to the visible viewport.

Returns:
ELM_FOCUS_AUTOSCROLL_MODE_SHOW if directly show the focused region or item automatically. ELM_FOCUS_AUTOSCROLL_MODE_NONE if do not show the focused region or item automatically. ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN if bring_in the focused region or item automatically which might invole the scrolling.
See also:
elm_config_focus_autoscroll_mode_set()
Since (EFL) :
1.10
Since :
3.0

Set focus auto scroll mode.

Parameters:
modefocus auto scroll mode. This can be one of the Elm_Focus_Autoscroll_Mode enum values.

When a region or an item is focused and it resides inside any scroller, elementary will automatically scroll the focused area to the visible viewport. Focus auto scroll mode is set to ELM_FOCUS_AUTOSCROLL_MODE_SHOW by default historically.

See also:
elm_config_focus_autoscroll_mode_get()
Since (EFL) :
1.10
Since :
3.0

Get the enable status of the focus highlight animation

Returns:
animate EINA_TRUE if the focus highlight animation is enabled, EINA_FALSE otherwise.

Get whether the focus highlight, if enabled, will animate its switch from one object to the next

See also:
elm_config_focus_highlight_animate_set()
Since :
2.3

Set the enable status of the highlight animation

Parameters:
animateEnable animation if EINA_TRUE, disable otherwise

Set whether the focus highlight, if enabled, will animate its switch from one object to the next

Note that it will take effect only to Elementary windows created after this is called.

See also:
elm_config_focus_highlight_animate_get()
Since :
2.3

Get the disable status of the focus highlight clip feature.

Returns:
The focus highlight clip disable status

Get whether the focus highlight clip feature is disabled. If disabled return EINA_TRUE, else return EINA_FALSE. If the return is EINA_TRUE, focus highlight clip feature is not disabled so the focus highlight can be clipped.

See also:
elm_config_focus_highlight_clip_disabled_set()
Since (EFL) :
1.10
Since :
3.0

Set the disable status of the focus highlight clip feature.

Parameters:
disableDisable focus highlight clip feature if EINA_TRUE, enable it otherwise.
See also:
elm_config_focus_highlight_clip_disabled_get()
Since (EFL) :
1.10
Since :
3.0

Get the enable status of the focus highlight

This gets whether the highlight on focused objects is enabled or not

Returns:
enable EINA_TRUE if the focus highlight is enabled, EINA_FALSE otherwise.
See also:
elm_config_focus_highlight_enabled_set()
Since :
2.3

Set the enable status of the focus highlight

Parameters:
enableEnable highlight if EINA_TRUE, disable otherwise

Set whether to show or not the highlight on focused objects

Note that it will take effect only to Elementary windows created after this is called.

See also:
elm_config_focus_highlight_enabled_get()
Since :
2.3

Get the focus movement policy

Returns:
The focus movement policy

Get how the focus is moved to another object. It can be ELM_FOCUS_MOVE_POLICY_CLICK or ELM_FOCUS_MOVE_POLICY_IN. The first means elementary focus is moved on elementary object click. The second means elementary focus is moved on elementary object mouse in.

See also:
elm_config_focus_move_policy_set()
Since (EFL) :
1.10
Since :
3.0

Set elementary focus movement policy

Parameters:
policyA policy to apply for the focus movement
See also:
elm_config_focus_move_policy_get()
Since (EFL) :
1.10
Since :
3.0

Get disable status of item select on focus feature.

Returns:
The item select on focus disable status
See also:
elm_config_item_select_on_focus_disabled_set
Since (EFL) :
1.10
Since :
3.0

Set the disable status of the item select on focus feature.

Parameters:
disabledDisable item select on focus if EINA_TRUE, enable otherwise
See also:
elm_config_item_select_on_focus_disabled_get
Since (EFL) :
1.10
Since :
3.0

Make a given Elementary object the focused one.

Parameters:
objThe Elementary object to make focused.
Note:
This object, if it can handle focus, will take the focus away from the one who had it previously and will, for now on, be the one receiving input events.
See also:
elm_object_focus_get()
Deprecated:
use elm_object_focus_set() instead.

Get whether an Elementary object is focusable or not

Parameters:
objThe Elementary object to operate on
Returns:
EINA_TRUE if the object is allowed to be focused, EINA_FALSE if not (and on errors)
Note:
Objects which are meant to be interacted with by input events are created able to be focused, by default. All the others are not.
Since :
2.3
void elm_object_focus_allow_set ( Evas_Object obj,
Eina_Bool  enable 
)

Set the ability for an Elementary object to be focused

Parameters:
objThe Elementary object to operate on
enableEINA_TRUE if the object can be focused, EINA_FALSE if not (and on errors)

This sets whether the object obj is able to take focus or not. Unfocusable objects do nothing when programmatically focused, being the nearest focusable parent object the one really getting focus. Also, when they receive mouse input, they will get the event, but not take away the focus from where it was previously.

Since :
2.3
void elm_object_focus_custom_chain_append ( Evas_Object obj,
Evas_Object child,
Evas_Object relative_child 
)

Append object to custom focus chain.

Note:
If relative_child equal to NULL or not in custom chain, the object will be added in end.
On focus cycle, only will be evaluated children of this container.
Parameters:
objThe container object
childThe child to be added in custom chain
relative_childThe relative object to position the child
Since :
2.3

Get custom focus chain

Parameters:
objThe container object
Returns:
Chain of objects to pass focus.
Since :
2.3
void elm_object_focus_custom_chain_prepend ( Evas_Object obj,
Evas_Object child,
Evas_Object relative_child 
)

Prepend object to custom focus chain.

Note:
If relative_child equal to NULL or not in custom chain, the object will be added in begin.
On focus cycle, only will be evaluated children of this container.
Parameters:
objThe container object
childThe child to be added in custom chain
relative_childThe relative object to position the child
Since :
2.3

Set custom focus chain.

This function overwrites any previous custom focus chain within the list of objects. The previous list will be deleted and this list will be managed by elementary. After it is set, don't modify it.

Note:
On focus cycle, only will be evaluated children of this container.
Parameters:
objThe container object
objsChain of objects to pass focus
Since :
2.3

Unset a custom focus chain on a given Elementary widget

Parameters:
objThe container object to remove focus chain from

Any focus chain previously set on obj (for its child objects) is removed entirely after this call.

Since :
2.3
EINA_DEPRECATED void elm_object_focus_direction_go ( Evas_Object obj,
int  x,
int  y 
)

Give focus to near object in one direction.

Give focus to near object in direction of one object. If none focusable object in given direction, the focus will not change.

Parameters:
objThe reference object
xHorizontal component of direction to focus
yVertical component of direction to focus
Deprecated:
Support it later.

Get the whether an Elementary object has the focus or not.

Parameters:
objThe Elementary object to get the information from
Returns:
EINA_TRUE, if the object is focused, EINA_FALSE if not (and on errors).
See also:
elm_object_focus_set()
Since :
2.3
const char* elm_object_focus_highlight_style_get ( const Evas_Object obj)

Get the focus highlight style to be used by a given widget.

Parameters:
objThe Elementary widget to query for its focus highlight style.
Returns:
The focus highlight style name used by widget.
See also:
elm_object_focus_highlight_style_set()
Since (EFL) :
1.9
Since :
3.0
Eina_Bool elm_object_focus_highlight_style_set ( Evas_Object obj,
const char *  style 
)

Set the focus highlight style to be used by a given widget.

Parameters:
objThe Elementary widget for which focus style needs to be set.
styleThe name of the focus style to use on it.
Returns:
EINA_TRUE on success, EINA_FALSE otherwise.
Note:
This overrides the style which is set by elm_win_focus_highlight_style_set().
See also:
elm_object_focus_highlight_style_get
Since (EFL) :
1.9
Since :
3.0

Returns the widget's focus movement policy mode setting.

Parameters:
objThe widget.
Returns:
focus movement policy mode setting of the object.
See also:
elm_object_focus_move_policy_automatic_set
Since (EFL) :
1.18

Sets the widget's focus movement policy mode setting. When widget in automatic mode, it follows the system focus movement policy mode set by elm_config_focus_move_policy_set().

Parameters:
objThe widget.
automaticEINA_TRUE for auto focus_move_policy mode. EINA_FALSE for manual.
See also:
elm_object_focus_move_policy_automatic_get
Since (EFL) :
1.18

Get the focus movement policy from a given Elementary objet.

Parameters:
objThe Elementary widget to get the information from
Returns:
The focus movement policy

Get how the focus is moved to the give Elementary object. It can be ELM_FOCUS_MOVE_POLICY_CLICK, ELM_FOCUS_MOVE_POLICY_IN, or ELM_FOCUS_MOVE_POLICY_KEY_ONLY. The first means elementary focus is moved on elementary object click. The second means elementary focus is moved on elementary object mouse in. The last means elementary focus is moved only by key input like Left, Right, Up, Down, Tab, or Shift+Tab.

See also:
elm_object_focus_move_policy_set
Since (EFL) :
1.15
Since :
3.0

Set the focus movement policy to a given Elementary object.

Parameters:
objThe Elementary object to operate on
policyA policy to apply for the focus movement
See also:
elm_object_focus_move_policy_get
Since (EFL) :
1.15
Since :
3.0
void elm_object_focus_next ( Evas_Object obj,
Elm_Focus_Direction  dir 
)

Give focus to next object in object tree.

Give focus to next object in focus chain of one object sub-tree. If the last object of chain already have focus, the focus will go to the first object of chain.

Parameters:
objThe object root of sub-tree
dirDirection to move the focus
See also:
elm_object_focus_next_object_get(), elm_object_focus_next_object_set()
Since :
2.3
Elm_Object_Item* elm_object_focus_next_item_get ( const Evas_Object obj,
Elm_Focus_Direction  dir 
)

Get next object item which was set with specific focus direction.

Get next object item which was set by elm_object_focus_next_item_set with specific focus direction.

Parameters:
objThe Elementary object
dirFocus direction
Returns:
Focus next object item or NULL, if there is no focus next object item.
See also:
elm_object_focus_next_item_set(), elm_object_focus_next()
Since (EFL) :
1.16
Since :
3.0
void elm_object_focus_next_item_set ( Evas_Object obj,
Elm_Object_Item next_item,
Elm_Focus_Direction  dir 
)

Set next object item with specific focus direction.

When focus next object item is set with specific focus direction, this object item will be the first candidate when finding next focusable object or item. If the focus next object item is set, it is preference to focus next object. Focus next object item can be registered with six directions that are previous, next, up, down, right, and left.

Parameters:
objThe Elementary object
next_itemFocus next object item
dirFocus direction
See also:
elm_object_focus_next_item_get(), elm_object_focus_next()
Since (EFL) :
1.16
Since :
3.0
Evas_Object* elm_object_focus_next_object_get ( const Evas_Object obj,
Elm_Focus_Direction  dir 
)

Get next object which was set with specific focus direction.

Get next object which was set by elm_object_focus_next_object_set with specific focus direction.

Parameters:
objThe Elementary object
dirFocus direction
Returns:
Focus next object or NULL, if there is no focus next object.
See also:
elm_object_focus_next_object_set(), elm_object_focus_next()
Since (EFL) :
1.8
Since :
2.3
void elm_object_focus_next_object_set ( Evas_Object obj,
Evas_Object next,
Elm_Focus_Direction  dir 
)

Set next object with specific focus direction.

When focus next object is set with specific focus direction, this object will be the first candidate when finding next focusable object. Focus next object can be registered with six directions that are previous, next, up, down, right, and left.

Parameters:
objThe Elementary object
nextFocus next object
dirFocus direction
See also:
elm_object_focus_next_object_get(), elm_object_focus_next()
Since (EFL) :
1.8
Since :
2.3

Get the focus region show mode to a given Elementary object.

Parameters:
objThe Elementary object to get the information from
Returns:
The focus region shown mode
See also:
elm_object_focus_region_show_mode_set
Since (EFL) :
1.16
Since :
3.0

Set the focus region show mode to a given Elementary object.

Parameters:
objThe Elementary object to operate on
modeA mode to show the focus region
See also:
elm_object_focus_region_show_mode_get

When the focus is move to the object in scroller, it is scrolled to show the focus region as a widget. If the focus region want to be shown as an item, set the mode ELM_FOCUS_REGION_SHOW_ITEM. If then, it will be scrolled as an item.

Since (EFL) :
1.16
Since :
3.0
void elm_object_focus_set ( Evas_Object obj,
Eina_Bool  focus 
)

Set/unset focus to a given Elementary object.

Parameters:
objThe Elementary object to operate on.
focusEINA_TRUE Set focus to a given object, EINA_FALSE Unset focus to a given object.
Note:
When you set focus to this object, if it can handle focus, will take the focus away from the one who had it previously and will, for now on, be the one receiving input events. Unsetting focus will remove the focus from obj, passing it back to the previous element in the focus chain list.
Warning:
Only visible object can get a focus. Call evas_object_show(o) before calling this API, if you want to give a focus to the evas object.
See also:
elm_object_focus_get(), elm_object_focus_custom_chain_get()
Since :
2.3

Get the focused object item

This returns the focused object item.

Parameters:
objThe container object
Returns:
The focused item, or NULL if none

The focused item can be unfocused with function elm_object_item_focus_set().

see () see ()

Since (EFL) :
1.10
Since :
3.0

Get focused object in object tree.

This function returns current focused object in one object sub-tree.

Parameters:
objThe object root of sub-tree
Returns:
Current focused or NULL, if there is no focused object.
Since (EFL) :
1.8
Since :
2.3

Get whether an Elementary object and its children are focusable or not.

Parameters:
objThe Elementary object to get the information from
Returns:
EINA_TRUE, if the tree is focusable, EINA_FALSE if not (and on errors).
See also:
elm_object_tree_focus_allow_set()
Since :
2.3
void elm_object_tree_focus_allow_set ( Evas_Object obj,
Eina_Bool  focusable 
)

Make the elementary object and its children to be focusable (or unfocusable).

Parameters:
objThe Elementary object to operate on
focusableEINA_TRUE for focusable, EINA_FALSE for unfocusable.

This sets whether the object obj and its children objects are able to take focus or not. If the tree is set as unfocusable, newest focused object which is not in this tree will get focus. This API can be helpful for an object to be deleted. When an object will be deleted soon, it and its children may not want to get focus (by focus reverting or by other focus controls). Then, just use this API before deleting.

See also:
elm_object_tree_focus_allow_get()
Since :
2.3

Remove the focus from an Elementary object

Parameters:
objThe Elementary to take focus from

This removes the focus from obj, passing it back to the previous element in the focus chain list.

See also:
elm_object_focus() and elm_object_focus_custom_chain_get()
Deprecated:
use elm_object_focus_set() instead.