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:
Yeongjong Lee 2018-01-16 21:17:11 +01:00 committed by Marcel Hollerbach
parent 9160bfe901
commit 210db8fc5d
26 changed files with 92 additions and 93 deletions

View File

@ -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 \

View File

@ -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>

View File

@ -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>

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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

View File

@ -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*

View File

@ -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

View File

@ -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"

View File

@ -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.]]
}
}

View File

@ -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.]]
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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; }

View File

@ -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

View File

@ -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

View File

@ -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)
{

View File

@ -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

View File

@ -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

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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);
}

View File

@ -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);

View File

@ -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; }
}
}

View File

@ -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; }
}
}