forked from enlightenment/efl
efl_ui_focus: merge efl_ui_focus_user and efl_ui_focus_object into one mixin
Summary: focus_user and focus_object are similar classes. by merging them into one mixin, we can maintain consistency. Test Plan: make check Reviewers: bu5hm4n Subscribers: cedric, Jaehyun_Cho, woohyun, jpeg Differential Revision: https://phab.enlightenment.org/D5734
This commit is contained in:
parent
9160bfe901
commit
210db8fc5d
|
@ -55,7 +55,6 @@ elm_public_eolian_files = \
|
|||
lib/elementary/efl_ui_focus_manager_sub.eo \
|
||||
lib/elementary/efl_ui_focus_manager_root_focus.eo \
|
||||
lib/elementary/efl_ui_focus_object.eo \
|
||||
lib/elementary/efl_ui_focus_user.eo \
|
||||
lib/elementary/efl_ui_focus_layer.eo \
|
||||
lib/elementary/efl_ui_focus_composition.eo \
|
||||
lib/elementary/efl_ui_focus_util.eo \
|
||||
|
|
|
@ -136,12 +136,16 @@ extern EAPI double _efl_startup_time;
|
|||
// EO types. Defined for legacy-only builds as legacy uses typedef of EO types.
|
||||
#include "efl_ui.eot.h"
|
||||
|
||||
//define focus manager earlier since focus object and manager is circular
|
||||
typedef Eo Efl_Ui_Focus_Manager;
|
||||
#define _EFL_UI_FOCUS_MANAGER_EO_CLASS_TYPE
|
||||
|
||||
# include <efl_ui_focus_object.eo.h>
|
||||
# include <efl_ui_focus_manager.eo.h>
|
||||
# include <efl_ui_focus_manager_calc.eo.h>
|
||||
# include <efl_ui_focus_manager_sub.eo.h>
|
||||
# include <efl_ui_focus_manager_root_focus.eo.h>
|
||||
# include <efl_ui_focus_user.eo.h>
|
||||
# include <efl_ui_focus_util.eo.h>
|
||||
# include <efl_ui_textpath.eo.h>
|
||||
# include <efl_ui_translatable.eo.h>
|
||||
# include <efl_ui_focus_composition.eo.h>
|
||||
|
|
|
@ -148,12 +148,16 @@ EAPI extern Elm_Version *elm_version;
|
|||
#include <elm_focus.h>
|
||||
|
||||
#if defined (EFL_EO_API_SUPPORT) && defined (EFL_BETA_API_SUPPORT)
|
||||
|
||||
//define focus manager earlier since focus object and manager is circular
|
||||
typedef Eo Efl_Ui_Focus_Manager;
|
||||
#define _EFL_UI_FOCUS_MANAGER_EO_CLASS_TYPE
|
||||
|
||||
# include <efl_ui_focus_object.eo.h>
|
||||
# include <efl_ui_focus_manager.eo.h>
|
||||
# include <efl_ui_focus_manager_calc.eo.h>
|
||||
# include <efl_ui_focus_manager_sub.eo.h>
|
||||
# include <efl_ui_focus_manager_root_focus.eo.h>
|
||||
# include <efl_ui_focus_user.eo.h>
|
||||
# include <efl_ui_focus_util.eo.h>
|
||||
# include <efl_ui_textpath.eo.h>
|
||||
# include <efl_ui_translatable.eo.h>
|
||||
|
|
|
@ -59,7 +59,7 @@ _efl_ui_focus_layer_efl_object_destructor(Eo *obj, Efl_Ui_Focus_Layer_Data *pd E
|
|||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Focus_Manager*
|
||||
_efl_ui_focus_layer_efl_ui_focus_user_focus_manager_get(Eo *obj, Efl_Ui_Focus_Layer_Data *pd EINA_UNUSED)
|
||||
_efl_ui_focus_layer_efl_ui_focus_object_focus_manager_get(Eo *obj, Efl_Ui_Focus_Layer_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return elm_widget_top_get(obj);
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ mixin Efl.Ui.Focus.Layer (Efl.Interface, Efl.Ui.Widget, Efl.Gfx, Efl.Ui.Focus.Ma
|
|||
Efl.Ui.Widget.focus_state_apply;
|
||||
Efl.Gfx.visible {set;}
|
||||
Efl.Ui.Focus.Manager.move;
|
||||
Efl.Ui.Focus.User.focus_manager { get; }
|
||||
Efl.Ui.Focus.Object.focus_manager { get; }
|
||||
Efl.Object.constructor;
|
||||
Efl.Object.destructor;
|
||||
}
|
||||
|
|
|
@ -86,12 +86,12 @@ _manager_in_chain_set(Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd)
|
|||
EINA_SAFETY_ON_NULL_RETURN(pd->root);
|
||||
|
||||
if (!efl_isa(pd->root->focusable, EFL_UI_WIN_CLASS))
|
||||
EINA_SAFETY_ON_NULL_RETURN(efl_ui_focus_user_focus_manager_get(pd->root->focusable));
|
||||
EINA_SAFETY_ON_NULL_RETURN(efl_ui_focus_object_focus_manager_get(pd->root->focusable));
|
||||
|
||||
//so we dont run infinitly this does not fix it, but at least we only have a error
|
||||
EINA_SAFETY_ON_TRUE_RETURN(efl_ui_focus_user_focus_manager_get(pd->root->focusable) == obj);
|
||||
EINA_SAFETY_ON_TRUE_RETURN(efl_ui_focus_object_focus_manager_get(pd->root->focusable) == obj);
|
||||
|
||||
manager = efl_ui_focus_user_focus_manager_get(pd->root->focusable);
|
||||
manager = efl_ui_focus_object_focus_manager_get(pd->root->focusable);
|
||||
if (manager)
|
||||
efl_ui_focus_manager_focus_set(manager, pd->root->focusable);
|
||||
else
|
||||
|
|
|
@ -49,7 +49,7 @@ _border_flush(Eo *obj, Efl_Ui_Focus_Manager_Sub_Data *pd)
|
|||
Efl_Ui_Focus_Object *node, *logical;
|
||||
Efl_Ui_Focus_Manager *manager;
|
||||
|
||||
manager = efl_ui_focus_user_focus_manager_get(obj);
|
||||
manager = efl_ui_focus_object_focus_manager_get(obj);
|
||||
logical = obj;
|
||||
borders = efl_ui_focus_manager_border_elements_get(obj);
|
||||
|
||||
|
@ -90,7 +90,7 @@ _border_unregister(Eo *obj, Efl_Ui_Focus_Manager_Sub_Data *pd)
|
|||
Efl_Ui_Focus_Object *node;
|
||||
Efl_Ui_Focus_Manager *manager;
|
||||
|
||||
manager = efl_ui_focus_user_focus_manager_get(obj);
|
||||
manager = efl_ui_focus_object_focus_manager_get(obj);
|
||||
EINA_LIST_FREE(pd->current_border, node)
|
||||
{
|
||||
if (node == obj) continue;
|
||||
|
@ -135,12 +135,12 @@ _logical_manager_change(void *data EINA_UNUSED, const Efl_Event *ev)
|
|||
{
|
||||
MY_DATA(data, pd);
|
||||
Eina_List *n;
|
||||
Efl_Ui_Focus_User *b;
|
||||
Efl_Ui_Focus_Object *b;
|
||||
Efl_Ui_Focus_Manager *manager;
|
||||
|
||||
if (!ev->info) return;
|
||||
|
||||
manager = efl_ui_focus_user_focus_manager_get(ev->object);
|
||||
manager = efl_ui_focus_object_focus_manager_get(ev->object);
|
||||
EINA_LIST_FOREACH(pd->current_border, n, b)
|
||||
{
|
||||
if (b == ev->object) continue;
|
||||
|
@ -153,11 +153,11 @@ _flush_manager(Eo *obj, Efl_Ui_Focus_Manager_Sub_Data *pd)
|
|||
{
|
||||
Efl_Ui_Focus_Manager *manager;
|
||||
Efl_Ui_Focus_Object *logical;
|
||||
Efl_Ui_Focus_User *b;
|
||||
Efl_Ui_Focus_Object *b;
|
||||
Eina_List *n;
|
||||
|
||||
logical = efl_ui_focus_user_focus_parent_get(obj);
|
||||
manager = efl_ui_focus_user_focus_manager_get(obj);
|
||||
logical = efl_ui_focus_object_focus_parent_get(obj);
|
||||
manager = efl_ui_focus_object_focus_manager_get(obj);
|
||||
|
||||
//unregister from the old
|
||||
if (pd->manager) efl_event_callback_array_del(pd->manager, parent_manager(), obj);
|
||||
|
@ -184,8 +184,8 @@ _manager_change(void *data, const Efl_Event *ev EINA_UNUSED)
|
|||
|
||||
EFL_CALLBACKS_ARRAY_DEFINE(self_manager,
|
||||
{EFL_UI_FOCUS_MANAGER_EVENT_COORDS_DIRTY, _self_manager_dirty},
|
||||
{EFL_UI_FOCUS_USER_EVENT_LOGICAL_CHANGED, _logical_manager_change},
|
||||
{EFL_UI_FOCUS_USER_EVENT_MANAGER_CHANGED, _manager_change}
|
||||
{EFL_UI_FOCUS_OBJECT_EVENT_LOGICAL_CHANGED, _logical_manager_change},
|
||||
{EFL_UI_FOCUS_OBJECT_EVENT_MANAGER_CHANGED, _manager_change}
|
||||
);
|
||||
|
||||
EOLIAN static Efl_Object*
|
||||
|
|
|
@ -3,7 +3,7 @@ mixin Efl.Ui.Focus.Manager.Sub (Efl.Interface, Efl.Ui.Focus.Manager, Efl.Object)
|
|||
[[A class that automatically registeres its border elements in the parent manager
|
||||
|
||||
This sub manager will register its border elements on the parent manager.
|
||||
The parent manager is found with the @Efl.Ui.Focus.User interface of the
|
||||
The parent manager is found with the @Efl.Ui.Focus.Object interface of the
|
||||
@Efl.Object.parent.
|
||||
|
||||
Each sub manager also has to be a focus object, the object itself will be
|
||||
|
|
|
@ -28,4 +28,3 @@ _efl_ui_focus_object_focus_get(Eo *obj EINA_UNUSED, Efl_Ui_Focus_Object_Data *pd
|
|||
|
||||
|
||||
#include "efl_ui_focus_object.eo.c"
|
||||
#include "efl_ui_focus_user.eo.c"
|
||||
|
|
|
@ -36,6 +36,25 @@ mixin Efl.Ui.Focus.Object
|
|||
focus : bool; [[The state in which the object should be put]]
|
||||
}
|
||||
}
|
||||
@property focus_manager {
|
||||
[[Describes which manager is used to register.
|
||||
|
||||
If an instance of this interface is the root of a manager, this instance should not have a manager where as root of this property. The other manager in this instance will be set as focused in the corresponding manager.
|
||||
This instance should be registered with its own manager as redirect.
|
||||
]]
|
||||
get {}
|
||||
values {
|
||||
manager : Efl.Ui.Focus.Manager; [[The manager object]]
|
||||
}
|
||||
}
|
||||
@property focus_parent {
|
||||
[[Describes which logical parent is used by this object.]]
|
||||
get {}
|
||||
values {
|
||||
logical_parent : Efl.Ui.Focus.Object; [[The focus parent.]]
|
||||
}
|
||||
}
|
||||
|
||||
prepare_logical {
|
||||
[[Tells the object that its children will be queried soon by the given manager.
|
||||
|
||||
|
@ -46,8 +65,14 @@ mixin Efl.Ui.Focus.Object
|
|||
implements {
|
||||
@empty .focus_geometry;
|
||||
@empty .prepare_logical;
|
||||
@empty .focus_manager;
|
||||
@empty .focus_parent;
|
||||
}
|
||||
events {
|
||||
focus,changed : bool; [[Emitted if the focus state has changed]]
|
||||
manager,changed: Efl.Ui.Focus.Manager; [[Emitted when a new manager is
|
||||
the parent for this object.]]
|
||||
logical,changed: Efl.Ui.Focus.Object; [[Emitted when a new logical
|
||||
parent should be used.]]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
interface Efl.Ui.Focus.User {
|
||||
[[Interface which is used to handle the manager of a user.
|
||||
|
||||
@since 1.20
|
||||
]]
|
||||
methods {
|
||||
@property focus_manager {
|
||||
[[Describes which manager is used to register.
|
||||
|
||||
If an instance of this interface is the root of a manager, this instance should not have a manager where as root of this property. The other manager in this instance will be set as focused in the corresponding manager.
|
||||
This instance should be registered with its own manager as redirect.
|
||||
]]
|
||||
get {}
|
||||
values {
|
||||
manager : Efl.Ui.Focus.Manager; [[The manager object]]
|
||||
}
|
||||
}
|
||||
@property focus_parent {
|
||||
[[Describes which logical parent is used by this object.]]
|
||||
get {}
|
||||
values {
|
||||
logical_parent : Efl.Ui.Focus.Object; [[The focus parent.]]
|
||||
}
|
||||
}
|
||||
}
|
||||
events {
|
||||
manager,changed: Efl.Ui.Focus.Manager; [[Emitted when a new manager is
|
||||
the parent for this object.]]
|
||||
logical,changed: Efl.Ui.Focus.Object; [[Emitted when a new logical
|
||||
parent should be used.]]
|
||||
}
|
||||
}
|
|
@ -16,23 +16,23 @@ _manager_changed(void *data, const Efl_Event *event EINA_UNUSED)
|
|||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_focus_util_focus(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, Efl_Ui_Focus_User *user)
|
||||
_efl_ui_focus_util_focus(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, Efl_Ui_Focus_Object *user)
|
||||
{
|
||||
Efl_Ui_Widget *top, *o;
|
||||
Efl_Ui_Focus_Manager *m;
|
||||
m = efl_ui_focus_user_focus_manager_get(user);
|
||||
m = efl_ui_focus_object_focus_manager_get(user);
|
||||
|
||||
top = elm_widget_top_get(user);
|
||||
|
||||
o = efl_key_data_get(top, "__delayed_focus_set");
|
||||
if (o) efl_event_callback_del(o, EFL_UI_FOCUS_USER_EVENT_MANAGER_CHANGED, _manager_changed, o);
|
||||
if (o) efl_event_callback_del(o, EFL_UI_FOCUS_OBJECT_EVENT_MANAGER_CHANGED, _manager_changed, o);
|
||||
efl_key_data_set(top, "__delayed_focus_set", NULL);
|
||||
|
||||
if (!m)
|
||||
{
|
||||
//delayed focusung
|
||||
efl_key_data_set(top, "__delayed_focus_set", user);
|
||||
efl_event_callback_add(user, EFL_UI_FOCUS_USER_EVENT_MANAGER_CHANGED, _manager_changed, user);
|
||||
efl_event_callback_add(user, EFL_UI_FOCUS_OBJECT_EVENT_MANAGER_CHANGED, _manager_changed, user);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1677,7 +1677,7 @@ static void
|
|||
_legacy_manager_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev)
|
||||
{
|
||||
efl_event_callback_del(ev->info, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, _legacy_focused, ev->object);
|
||||
efl_event_callback_add(efl_ui_focus_user_focus_manager_get(ev->object), EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, _legacy_focused, ev->object);
|
||||
efl_event_callback_add(efl_ui_focus_object_focus_manager_get(ev->object), EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, _legacy_focused, ev->object);
|
||||
}
|
||||
|
||||
EOLIAN static Eo *
|
||||
|
@ -1689,7 +1689,7 @@ _efl_ui_multibuttonentry_efl_object_constructor(Eo *obj, Efl_Ui_Multibuttonentry
|
|||
efl_access_role_set(obj, EFL_ACCESS_ROLE_PANEL);
|
||||
|
||||
//listen to manager changes here
|
||||
efl_event_callback_add(obj, EFL_UI_FOCUS_USER_EVENT_MANAGER_CHANGED, _legacy_manager_changed_cb, NULL);
|
||||
efl_event_callback_add(obj, EFL_UI_FOCUS_OBJECT_EVENT_MANAGER_CHANGED, _legacy_manager_changed_cb, NULL);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
|
|
@ -313,7 +313,7 @@ _focus_manager_eval(Eo *obj, Elm_Widget_Smart_Data *pd)
|
|||
}
|
||||
else if (parent)
|
||||
{
|
||||
new = efl_ui_focus_user_focus_manager_get(parent);
|
||||
new = efl_ui_focus_object_focus_manager_get(parent);
|
||||
provider = parent;
|
||||
}
|
||||
|
||||
|
@ -322,13 +322,13 @@ _focus_manager_eval(Eo *obj, Elm_Widget_Smart_Data *pd)
|
|||
old = pd->manager.manager;
|
||||
|
||||
if (pd->manager.provider)
|
||||
efl_event_callback_del(pd->manager.provider, EFL_UI_FOCUS_USER_EVENT_MANAGER_CHANGED, _manager_changed_cb, obj);
|
||||
efl_event_callback_del(pd->manager.provider, EFL_UI_FOCUS_OBJECT_EVENT_MANAGER_CHANGED, _manager_changed_cb, obj);
|
||||
|
||||
pd->manager.manager = new;
|
||||
pd->manager.provider = provider;
|
||||
|
||||
if (pd->manager.provider)
|
||||
efl_event_callback_add(pd->manager.provider, EFL_UI_FOCUS_USER_EVENT_MANAGER_CHANGED, _manager_changed_cb, obj);
|
||||
efl_event_callback_add(pd->manager.provider, EFL_UI_FOCUS_OBJECT_EVENT_MANAGER_CHANGED, _manager_changed_cb, obj);
|
||||
}
|
||||
|
||||
return old;
|
||||
|
@ -541,13 +541,13 @@ _full_eval(Eo *obj, Elm_Widget_Smart_Data *pd)
|
|||
if (old_registered_parent != pd->focus.parent)
|
||||
{
|
||||
efl_event_callback_call(obj,
|
||||
EFL_UI_FOCUS_USER_EVENT_LOGICAL_CHANGED, old_registered_parent);
|
||||
EFL_UI_FOCUS_OBJECT_EVENT_LOGICAL_CHANGED, old_registered_parent);
|
||||
}
|
||||
|
||||
if (old_registered_manager != pd->focus.manager)
|
||||
{
|
||||
efl_event_callback_call(obj,
|
||||
EFL_UI_FOCUS_USER_EVENT_MANAGER_CHANGED, old_registered_manager);
|
||||
EFL_UI_FOCUS_OBJECT_EVENT_MANAGER_CHANGED, old_registered_manager);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5200,7 +5200,7 @@ _efl_ui_widget_efl_object_destructor(Eo *obj, Elm_Widget_Smart_Data *sd)
|
|||
{
|
||||
if (sd->manager.provider)
|
||||
{
|
||||
efl_event_callback_del(sd->manager.provider, EFL_UI_FOCUS_USER_EVENT_MANAGER_CHANGED, _manager_changed_cb, obj);
|
||||
efl_event_callback_del(sd->manager.provider, EFL_UI_FOCUS_OBJECT_EVENT_MANAGER_CHANGED, _manager_changed_cb, obj);
|
||||
sd->manager.provider = NULL;
|
||||
}
|
||||
efl_access_attributes_clear(obj);
|
||||
|
@ -5494,13 +5494,13 @@ _efl_ui_widget_efl_object_provider_find(const Eo *obj, Elm_Widget_Smart_Data *pd
|
|||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Focus_Manager*
|
||||
_efl_ui_widget_efl_ui_focus_user_focus_parent_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *pd EINA_UNUSED)
|
||||
_efl_ui_widget_efl_ui_focus_object_focus_parent_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return pd->focus.parent;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Focus_Manager*
|
||||
_efl_ui_widget_efl_ui_focus_user_focus_manager_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *pd EINA_UNUSED)
|
||||
_efl_ui_widget_efl_ui_focus_object_focus_manager_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return pd->focus.manager;
|
||||
}
|
||||
|
|
|
@ -9,15 +9,15 @@ function Efl.Ui.Scrollable_On_Show_Region {
|
|||
struct Efl.Ui.Widget.Focus_State {
|
||||
[[All relevant fields needed for the current state of focus registeration]]
|
||||
manager : Efl.Ui.Focus.Manager; [[The manager where the widget is registered in]]
|
||||
parent : Efl.Ui.Focus.User; [[The parent the widget is using as logical parent]]
|
||||
parent : Efl.Ui.Focus.Object; [[The parent the widget is using as logical parent]]
|
||||
logical : bool; [[$true if this is registered as logical currently]]
|
||||
}
|
||||
|
||||
/* ATTENTION: Rename to Efl.Ui.Widget is imminent. */
|
||||
abstract Efl.Ui.Widget (Efl.Canvas.Group, Efl.Access,
|
||||
Efl.Access.Component, Efl.Ui.Focus.User, Efl.Part,
|
||||
Efl.Ui.Focus.Object, Efl.Ui.Base, Efl.Ui.Cursor,
|
||||
Efl.Ui.Translatable, Efl.Selection, Efl.Ui.Dnd)
|
||||
Efl.Access.Component, Efl.Part, Efl.Ui.Focus.Object,
|
||||
Efl.Ui.Base, Efl.Ui.Cursor, Efl.Ui.Translatable,
|
||||
Efl.Selection, Efl.Ui.Dnd)
|
||||
{
|
||||
[[Efl UI widget abstract class]]
|
||||
legacy_prefix: elm_widget;
|
||||
|
@ -598,8 +598,8 @@ abstract Efl.Ui.Widget (Efl.Canvas.Group, Efl.Access,
|
|||
Efl.Access.parent { get; }
|
||||
Efl.Access.attributes { get; }
|
||||
Efl.Access.Component.focus_grab;
|
||||
Efl.Ui.Focus.User.focus_manager { get; }
|
||||
Efl.Ui.Focus.User.focus_parent { get; }
|
||||
Efl.Ui.Focus.Object.focus_manager { get; }
|
||||
Efl.Ui.Focus.Object.focus_parent { get; }
|
||||
Efl.Ui.Focus.Object.focus_geometry { get; }
|
||||
Efl.Ui.Focus.Object.focus { set; }
|
||||
Efl.Ui.Base.mirrored { get; set; }
|
||||
|
|
|
@ -117,7 +117,7 @@ _focus_chain_update(Eo *obj, Elm_Fileselector_Data *pd)
|
|||
|
||||
#undef A
|
||||
|
||||
efl_ui_focus_manager_calc_update_order(efl_ui_focus_user_focus_manager_get(obj), obj, tmp);
|
||||
efl_ui_focus_manager_calc_update_order(efl_ui_focus_object_focus_manager_get(obj), obj, tmp);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -92,7 +92,7 @@ _prev_page_focus_recover(Elm_Naviframe_Item_Data *it)
|
|||
{
|
||||
Elm_Naviframe *n = it->base->widget;
|
||||
|
||||
efl_ui_focus_manager_focus_set(efl_ui_focus_user_focus_manager_get(n), n);
|
||||
efl_ui_focus_manager_focus_set(efl_ui_focus_object_focus_manager_get(n), n);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
|
|
@ -537,7 +537,7 @@ _access_highlight_next_get(Evas_Object *obj, Elm_Focus_Direction dir)
|
|||
{
|
||||
Efl_Ui_Focus_Relations *rel;
|
||||
|
||||
rel = efl_ui_focus_manager_fetch(efl_ui_focus_user_focus_manager_get(obj), obj);
|
||||
rel = efl_ui_focus_manager_fetch(efl_ui_focus_object_focus_manager_get(obj), obj);
|
||||
|
||||
if (rel)
|
||||
{
|
||||
|
|
|
@ -664,7 +664,7 @@ _elm_hover_efl_gfx_visible_set(Eo *obj, Elm_Hover_Data *pd, Eina_Bool vis)
|
|||
{
|
||||
_hov_show_do(obj);
|
||||
//we just set ourself as redirect in the next upper manager
|
||||
pd->redirected = efl_ui_focus_user_focus_manager_get(pd->target);
|
||||
pd->redirected = efl_ui_focus_object_focus_manager_get(pd->target);
|
||||
efl_ui_focus_manager_redirect_set(pd->redirected, obj);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -1586,13 +1586,13 @@ elm_object_focus_get(const Evas_Object *obj)
|
|||
if (!elm_widget_is(obj))
|
||||
return evas_object_focus_get(obj);
|
||||
|
||||
m = efl_ui_focus_user_focus_manager_get(obj);
|
||||
m = efl_ui_focus_object_focus_manager_get(obj);
|
||||
|
||||
//no manager means not registered
|
||||
if (!m) return EINA_FALSE;
|
||||
|
||||
//assertion: our redirect manager m is in the redirect chain
|
||||
m = efl_ui_focus_user_focus_manager_get(obj);
|
||||
m = efl_ui_focus_object_focus_manager_get(obj);
|
||||
|
||||
//if obj is the redriect manager its kind of focused
|
||||
if (efl_ui_focus_manager_redirect_get(m) == obj) return EINA_TRUE;
|
||||
|
@ -1607,7 +1607,7 @@ elm_object_focus_get(const Evas_Object *obj)
|
|||
{
|
||||
if (focused_child == obj) return EINA_TRUE;
|
||||
|
||||
focused_child = efl_ui_focus_user_focus_parent_get(focused_child);
|
||||
focused_child = efl_ui_focus_object_focus_parent_get(focused_child);
|
||||
}
|
||||
|
||||
return efl_ui_focus_object_focus_get(obj);
|
||||
|
@ -1635,8 +1635,8 @@ elm_object_focus_set(Evas_Object *obj,
|
|||
efl_ui_focus_util_focus(EFL_UI_FOCUS_UTIL_CLASS, obj);
|
||||
else
|
||||
{
|
||||
if (efl_ui_focus_manager_focus_get(efl_ui_focus_user_focus_manager_get(obj)) == obj)
|
||||
efl_ui_focus_manager_pop_history_stack(efl_ui_focus_user_focus_manager_get(obj));
|
||||
if (efl_ui_focus_manager_focus_get(efl_ui_focus_object_focus_manager_get(obj)) == obj)
|
||||
efl_ui_focus_manager_pop_history_stack(efl_ui_focus_object_focus_manager_get(obj));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -660,7 +660,7 @@ _toggle_entry(Evas_Object *obj)
|
|||
|
||||
efl_ui_focus_composition_elements_set(obj, items);
|
||||
}
|
||||
efl_ui_focus_manager_focus_set(efl_ui_focus_user_focus_manager_get(obj), sd->ent);
|
||||
efl_ui_focus_manager_focus_set(efl_ui_focus_object_focus_manager_get(obj), sd->ent);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -439,7 +439,7 @@ typedef struct _Elm_Widget_Smart_Data
|
|||
} logical;
|
||||
struct {
|
||||
Efl_Ui_Focus_Manager *manager;
|
||||
Efl_Ui_Focus_User *provider;
|
||||
Efl_Ui_Focus_Object *provider;
|
||||
} manager;
|
||||
|
||||
Eina_Bool scroll_x_locked : 1;
|
||||
|
|
|
@ -101,13 +101,13 @@ _focus_test_efl_gfx_geometry_get(Eo *obj EINA_UNUSED, Focus_Test_Data *pd)
|
|||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Focus_Manager*
|
||||
_focus_test_efl_ui_focus_user_focus_manager_get(Eo *obj EINA_UNUSED, Focus_Test_Data *pd)
|
||||
_focus_test_efl_ui_focus_object_focus_manager_get(Eo *obj EINA_UNUSED, Focus_Test_Data *pd)
|
||||
{
|
||||
return pd->manager;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Focus_Object*
|
||||
_focus_test_efl_ui_focus_user_focus_parent_get(Eo *obj, Focus_Test_Data *pd EINA_UNUSED)
|
||||
_focus_test_efl_ui_focus_object_focus_parent_get(Eo *obj, Focus_Test_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return efl_parent_get(obj);
|
||||
}
|
||||
|
|
|
@ -13,13 +13,13 @@ _focus_test_sub_main_efl_ui_focus_object_focus_geometry_get(Eo *obj EINA_UNUSED,
|
|||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Focus_Manager*
|
||||
_focus_test_sub_main_efl_ui_focus_user_focus_manager_get(Eo *obj, Focus_Test_Sub_Main_Data *pd EINA_UNUSED)
|
||||
_focus_test_sub_main_efl_ui_focus_object_focus_manager_get(Eo *obj, Focus_Test_Sub_Main_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return efl_key_data_get(obj, "__user_manager");
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Focus_Object*
|
||||
_focus_test_sub_main_efl_ui_focus_user_focus_parent_get(Eo *obj, Focus_Test_Sub_Main_Data *pd EINA_UNUSED)
|
||||
_focus_test_sub_main_efl_ui_focus_object_focus_parent_get(Eo *obj, Focus_Test_Sub_Main_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return efl_key_data_get(obj, "__user_parent");
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ _setup(Efl_Ui_Focus_Manager **m, Efl_Ui_Focus_Manager_Sub **sub, Efl_Ui_Focus_Ob
|
|||
|
||||
efl_composite_attach(focus_main, subm);
|
||||
|
||||
efl_event_callback_call(focus_main, EFL_UI_FOCUS_USER_EVENT_MANAGER_CHANGED, NULL);
|
||||
efl_event_callback_call(focus_main, EFL_UI_FOCUS_OBJECT_EVENT_MANAGER_CHANGED, NULL);
|
||||
|
||||
efl_ui_focus_manager_calc_register_logical(manager, focus_main, root_manager, subm);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
class Focus.Test(Efl.Object, Efl.Ui.Focus.Object, Efl.Ui.Focus.User, Efl.Gfx) {
|
||||
class Focus.Test(Efl.Object, Efl.Ui.Focus.Object, Efl.Gfx) {
|
||||
methods {
|
||||
size {
|
||||
params {
|
||||
|
@ -18,8 +18,8 @@ class Focus.Test(Efl.Object, Efl.Ui.Focus.Object, Efl.Ui.Focus.User, Efl.Gfx) {
|
|||
Efl.Object.constructor;
|
||||
Efl.Ui.Focus.Object.focus_geometry { get; }
|
||||
Efl.Ui.Focus.Object.focus { set; }
|
||||
Efl.Ui.Focus.User.focus_manager { get; }
|
||||
Efl.Ui.Focus.User.focus_parent {get; }
|
||||
Efl.Ui.Focus.Object.focus_manager { get; }
|
||||
Efl.Ui.Focus.Object.focus_parent {get; }
|
||||
Efl.Gfx.geometry { get; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
class Focus.Test.Sub.Main(Efl.Object, Efl.Ui.Focus.User, Efl.Ui.Focus.Object, Efl.Ui.Focus.Manager.Sub) {
|
||||
class Focus.Test.Sub.Main(Efl.Object, Efl.Ui.Focus.Object, Efl.Ui.Focus.Manager.Sub) {
|
||||
implements {
|
||||
Efl.Ui.Focus.User.focus_manager { get; }
|
||||
Efl.Ui.Focus.User.focus_parent { get; }
|
||||
Efl.Ui.Focus.Object.focus_manager { get; }
|
||||
Efl.Ui.Focus.Object.focus_parent { get; }
|
||||
Efl.Ui.Focus.Object.focus_geometry { get; }
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue