From 59b3ea0115ec2c603596ede858d5d14ca45adddc Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 14 Feb 2018 21:14:52 -0500 Subject: [PATCH] efl.access: remove parent property most of this is just a reimplementation of efl_provider_find --- src/lib/elementary/efl_access.c | 41 +++++++++++++------------------- src/lib/elementary/efl_access.eo | 12 +--------- src/lib/elementary/efl_ui_widget.c | 42 +++++++++++++-------------------- src/lib/elementary/efl_ui_widget.eo | 1 - src/lib/elementary/efl_ui_win.c | 16 ++++--------- src/lib/elementary/efl_ui_win.eo | 3 +-- src/lib/elementary/efl_ui_win_socket.c | 4 ++-- src/lib/elementary/efl_ui_win_socket.eo | 2 +- src/lib/elementary/elm_atspi_bridge.c | 26 ++++++++++---------- src/lib/elementary/elm_atspi_proxy.c | 2 +- src/lib/elementary/elm_atspi_proxy.eo | 2 +- src/lib/elementary/elm_entry.c | 6 ++--- src/lib/elementary/elm_gengrid.c | 7 ++---- src/lib/elementary/elm_genlist.c | 4 ++-- src/lib/elementary/elm_list.c | 17 ++++--------- src/lib/elementary/elm_list.eo | 2 +- src/lib/elementary/elm_menu.c | 8 ++++--- src/lib/elementary/elm_menu_item.eo | 2 +- src/lib/elementary/elm_toolbar.c | 4 ++-- src/lib/elementary/elm_toolbar.eo | 2 +- src/lib/elementary_tizen/elm_genlist.c | 4 ++-- src/tests/elementary/elm_test_gengrid.c | 2 +- src/tests/elementary/elm_test_list.c | 11 +++++---- 23 files changed, 88 insertions(+), 132 deletions(-) diff --git a/src/lib/elementary/efl_access.c b/src/lib/elementary/efl_access.c index da8acdc..a7c2ba6 100644 --- a/src/lib/elementary/efl_access.c +++ b/src/lib/elementary/efl_access.c @@ -179,7 +179,7 @@ _efl_access_index_in_parent_get(Eo *obj, Efl_Access_Data *pd EINA_UNUSED) Eo *chld, *parent = NULL; int ret = 0; - parent = efl_access_parent_get(obj); + parent = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); if (!parent) return -1; children = efl_access_children_get(parent); @@ -200,29 +200,20 @@ _efl_access_index_in_parent_get(Eo *obj, Efl_Access_Data *pd EINA_UNUSED) return ret; } -EOLIAN static Efl_Access * -_efl_access_parent_get(Eo *obj EINA_UNUSED, Efl_Access_Data *pd EINA_UNUSED) -{ - Efl_Access_Type type; - Eo *parent = obj; - - do { - parent = efl_parent_get(obj); - if (efl_isa(parent, EFL_ACCESS_MIXIN)) - { - type = efl_access_type_get(parent); - if (type != EFL_ACCESS_TYPE_SKIPPED) break; - } - } while (parent); - return efl_isa(parent, EFL_ACCESS_MIXIN) ? parent : NULL; -} - -EOLIAN static void -_efl_access_parent_set(Eo *obj, Efl_Access_Data *pd EINA_UNUSED, Efl_Access *new_parent EINA_UNUSED) +EOLIAN static Efl_Object * +_efl_access_efl_object_provider_find(const Eo *obj, Efl_Access_Data *pd EINA_UNUSED, const Efl_Object *klass) { - WRN("The %s object does not implement the \"accessible_parent_set\" function.", - efl_class_name_get(efl_class_get(obj))); + if (efl_isa(obj, klass)) + { + if (klass == EFL_ACCESS_MIXIN) + { + Efl_Access_Type type = efl_access_type_get(obj); + if (type != EFL_ACCESS_TYPE_SKIPPED) return (Eo*)obj; + } + else return (Eo*)obj; + } + return efl_provider_find(efl_super(obj, EFL_ACCESS_MIXIN), klass); } EOLIAN Eina_List* @@ -858,7 +849,7 @@ _efl_access_type_set(Eo *obj, Efl_Access_Data *pd, Efl_Access_Type val) if (val == pd->type) return; - parent = efl_access_parent_get(obj); + parent = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); switch (val) { @@ -1024,13 +1015,13 @@ elm_atspi_accessible_gesture_cb_set(Elm_Interface_Atspi_Accessible *obj, Elm_Ats EAPI void elm_atspi_accessible_parent_set(Elm_Interface_Atspi_Accessible *obj, Elm_Interface_Atspi_Accessible *parent) { - efl_access_parent_set(obj, parent); + efl_parent_set(obj, parent); } EAPI Elm_Interface_Atspi_Accessible * elm_atspi_accessible_parent_get(const Elm_Interface_Atspi_Accessible *obj) { - return efl_access_parent_get(obj); + return efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); } EAPI Elm_Atspi_State_Set diff --git a/src/lib/elementary/efl_access.eo b/src/lib/elementary/efl_access.eo index 122baf1..09e6045 100644 --- a/src/lib/elementary/efl_access.eo +++ b/src/lib/elementary/efl_access.eo @@ -491,17 +491,6 @@ mixin Efl.Access (Efl.Interface, Efl.Object) description: string; [[Accessible contextual information]] } } - @property parent @beta { - get { - [[Gets object's accessible parent.]] - } - set { - [[Sets object's accessible parent.]] - } - values { - parent: Efl.Access; [[Accessible parent]] - } - } @property state_set @protected @beta { get { [[Gets set describing object accessible states.]] @@ -646,6 +635,7 @@ mixin Efl.Access (Efl.Interface, Efl.Object) } implements { Efl.Object.destructor; + Efl.Object.provider_find; } events { property,changed: string; [[Called when property has changed]] diff --git a/src/lib/elementary/efl_ui_widget.c b/src/lib/elementary/efl_ui_widget.c index 88892d3..56c1678 100644 --- a/src/lib/elementary/efl_ui_widget.c +++ b/src/lib/elementary/efl_ui_widget.c @@ -975,7 +975,7 @@ _efl_ui_widget_efl_gfx_visible_set(Eo *obj, Elm_Widget_Smart_Data *pd, Eina_Bool if (highlighted_obj && highlighted_obj != obj) { Eo *parent; - parent = efl_access_parent_get(highlighted_obj); + parent = efl_provider_find(efl_parent_get(highlighted_obj), EFL_ACCESS_MIXIN); while (parent) { if (parent == obj) @@ -984,7 +984,7 @@ _efl_ui_widget_efl_gfx_visible_set(Eo *obj, Elm_Widget_Smart_Data *pd, Eina_Bool efl_access_component_highlight_clear(highlighted_obj); break; } - parent = efl_access_parent_get(parent); + parent = efl_provider_find(efl_parent_get(parent), EFL_ACCESS_MIXIN); } } // @@ -1603,7 +1603,7 @@ _efl_ui_widget_widget_sub_object_add(Eo *obj, Elm_Widget_Smart_Data *sd, Evas_Ob if (_elm_atspi_enabled() && !sd->on_create) { Efl_Access *aparent; - aparent = efl_access_parent_get(sobj); + aparent = efl_provider_find(efl_parent_get(sobj), EFL_ACCESS_MIXIN); if (aparent) efl_access_children_changed_added_signal_emit(aparent, sobj); } @@ -1695,7 +1695,7 @@ _efl_ui_widget_widget_sub_object_del(Eo *obj, Elm_Widget_Smart_Data *sd, Evas_Ob if (_elm_atspi_enabled() && !sd->on_destroy) { Efl_Access *aparent; - aparent = efl_access_parent_get(sobj); + aparent = efl_provider_find(efl_parent_get(sobj), EFL_ACCESS_MIXIN); if (aparent) efl_access_children_changed_del_signal_emit(aparent, sobj); } @@ -4431,13 +4431,13 @@ _elm_widget_item_highlightable(Elm_Object_Item *item) if (!id) return EINA_FALSE; if (!id->can_highlight) return EINA_FALSE; - parent = efl_access_parent_get(item); + parent = efl_provider_find(efl_parent_get(item), EFL_ACCESS_MIXIN); while (parent && !efl_isa(parent, ELM_ATSPI_APP_OBJECT_CLASS)) { //TIZEN_ONLY(20160929) : atspi: Improves how to find the can_highlight of the widget if (!_elm_widget_can_highlight_get_by_class(parent)) return EINA_FALSE; // - parent = efl_access_parent_get(parent); + parent = efl_provider_find(efl_parent_get(parent), EFL_ACCESS_MIXIN); } return EINA_TRUE; } @@ -6092,7 +6092,7 @@ _efl_ui_widget_efl_access_children_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Dat // TIZEN_ONLY(20160824): Do not append a child, if its accessible parent is different with widget parent if (efl_isa(widget, EFL_ACCESS_MIXIN)) { - parent = efl_access_parent_get(widget); + parent = efl_provider_find(efl_parent_get(widget), EFL_ACCESS_MIXIN); if (parent && (parent != obj)) continue; } // TIZEN_ONLY(20160705) - enable atspi_proxy to work @@ -6157,21 +6157,6 @@ _efl_ui_widget_efl_access_children_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Dat return accs; } -EOLIAN static Eo* -_efl_ui_widget_efl_access_parent_get(Eo *obj, Elm_Widget_Smart_Data *pd EINA_UNUSED) -{ - Efl_Access_Type type; - Efl_Access *parent = obj; - - do { - ELM_WIDGET_DATA_GET_OR_RETURN(parent, wd, NULL); - parent = wd->parent_obj; - type = efl_access_type_get(parent); - } while (parent && (type == EFL_ACCESS_TYPE_SKIPPED)); - - return efl_isa(parent, EFL_ACCESS_MIXIN) ? parent : NULL; -} - //TIZEN_ONLY(20161107): enhance elm_atspi_accessible_can_highlight_set to set can_hihglight property to its children EAPI Eina_Bool _elm_widget_highlightable(Evas_Object *obj) @@ -6182,13 +6167,13 @@ _elm_widget_highlightable(Evas_Object *obj) if (!wd) return EINA_FALSE; if (!wd->can_highlight) return EINA_FALSE; - parent = efl_access_parent_get(obj); + parent = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); while (parent && !efl_isa(parent, ELM_ATSPI_APP_OBJECT_CLASS)) { //TIZEN_ONLY(20160929) : atspi: Improves how to find the can_highlight of the widget if (!_elm_widget_can_highlight_get_by_class(parent)) return EINA_FALSE; // - parent = efl_access_parent_get(parent); + parent = efl_provider_find(efl_parent_get(parent), EFL_ACCESS_MIXIN); } return EINA_TRUE; } @@ -6467,6 +6452,13 @@ _efl_ui_widget_efl_object_provider_find(const Eo *obj, Elm_Widget_Smart_Data *pd if ((klass == EFL_CONFIG_INTERFACE) || (klass == EFL_CONFIG_GLOBAL_CLASS)) return _efl_config_obj; + if (klass == EFL_ACCESS_MIXIN) + { + Efl_Access_Type type = efl_access_type_get(obj); + if (type != EFL_ACCESS_TYPE_SKIPPED) + return (Eo*)obj; + } + if (pd->provider_lookup) return NULL; pd->provider_lookup = EINA_TRUE; @@ -7361,7 +7353,7 @@ _accessible_at_point_top_down_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSE { // TIZEN_ONLY(20171109) : fix for invalid proxy object, when at-spi has been restarted Eo *parent; - parent = efl_access_parent_get(smart_parent); + parent = efl_provider_find(efl_parent_get(smart_parent), EFL_ACCESS_MIXIN); proxy = plug_type_proxy_get(parent, smart_parent); // evas_object_geometry_get(smart_parent, &px, &py, &pw, &ph); diff --git a/src/lib/elementary/efl_ui_widget.eo b/src/lib/elementary/efl_ui_widget.eo index 35e751a..e886053 100644 --- a/src/lib/elementary/efl_ui_widget.eo +++ b/src/lib/elementary/efl_ui_widget.eo @@ -619,7 +619,6 @@ abstract Efl.Ui.Widget (Efl.Canvas.Group, Efl.Access, Efl.Access.i18n_name { get; } Efl.Access.state_set { get; } Efl.Access.children { get; } - Efl.Access.parent { get; } Efl.Access.attributes { get; } Efl.Access.Component.focus_grab; Efl.Ui.Focus.Object.focus_manager { get; } diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index 3d74e3e..ffa8143 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -7834,15 +7834,6 @@ _efl_ui_win_efl_object_debug_name_override(Eo *obj, Efl_Ui_Win_Data *pd, Eina_St eina_strbuf_append_printf(sb, ":'%s':'%s'", pd->name, pd->title); } -EOLIAN static Eo* -_efl_ui_win_efl_access_parent_get(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd EINA_UNUSED) -{ - // attach all kinds of windows directly to ATSPI application root object - Eo *root; - root = efl_access_root_get(EFL_ACCESS_MIXIN); - return root; -} - EOLIAN static const Efl_Access_Action_Data* _efl_ui_win_efl_access_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd EINA_UNUSED) { @@ -7927,6 +7918,9 @@ _efl_ui_win_efl_object_provider_find(const Eo *obj, if (klass == EFL_UI_WIN_CLASS) return (Eo *)obj; + // attach all kinds of windows directly to ATSPI application root object + if (klass == EFL_ACCESS_MIXIN) return efl_access_root_get(EFL_ACCESS_MIXIN); + if (klass == EFL_UI_FOCUS_PARENT_PROVIDER_INTERFACE) return pd->provider; @@ -9164,11 +9158,11 @@ static int _sort_parent_child_order(const void *data1, const void *data2) if (data1) { Eo *parent; - parent = efl_access_parent_get(data1); + parent = efl_provider_find(efl_parent_get(data1), EFL_ACCESS_MIXIN); while (parent) { if (parent == data2) return 1; - parent = efl_access_parent_get(parent); + parent = efl_provider_find(efl_parent_get(parent), EFL_ACCESS_MIXIN); } } return -1; diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo index f02b298..ff91f4e 100644 --- a/src/lib/elementary/efl_ui_win.eo +++ b/src/lib/elementary/efl_ui_win.eo @@ -804,6 +804,7 @@ class Efl.Ui.Win (Efl.Ui.Widget, Efl.Canvas, Efl.Canvas.Pointer, Efl.Access.Wind class.constructor; Efl.Object.constructor; Efl.Object.destructor; + Efl.Object.provider_find; Efl.Object.finalize; Efl.Object.debug_name_override; Efl.Gfx.visible { set; } @@ -820,7 +821,6 @@ class Efl.Ui.Win (Efl.Ui.Widget, Efl.Canvas, Efl.Canvas.Pointer, Efl.Access.Wind Efl.Ui.Focus.Object.on_focus_update; Efl.Ui.Widget.widget_event; Efl.Ui.Widget.focus_manager_create; - Efl.Access.parent { get; } Efl.Access.state_set { get; } Efl.Access.i18n_name { get; } Efl.Access.Component.extents { get; } @@ -851,7 +851,6 @@ class Efl.Ui.Win (Efl.Ui.Widget, Efl.Canvas, Efl.Canvas.Pointer, Efl.Access.Wind Efl.Content.content { get; set; } Efl.Content.content_unset; Efl.Part.part; - Efl.Object.provider_find; /*********************************************************** * TIZEN_ONLY(20180117): Override Paragraph Direction APIs * ***********************************************************/ diff --git a/src/lib/elementary/efl_ui_win_socket.c b/src/lib/elementary/efl_ui_win_socket.c index c7b4f06..88726aa 100644 --- a/src/lib/elementary/efl_ui_win_socket.c +++ b/src/lib/elementary/efl_ui_win_socket.c @@ -121,11 +121,11 @@ _efl_ui_win_socket_efl_gfx_visible_set(Eo *obj, Efl_Ui_Win_Socket_Data *sd EINA_ } EOLIAN static Eo* -_efl_ui_win_socket_efl_access_parent_get(Eo *obj, Efl_Ui_Win_Socket_Data *pd) +_efl_ui_win_socket_efl_object_parent_get(Eo *obj, Efl_Ui_Win_Socket_Data *pd) { if (pd->socket_proxy) return pd->socket_proxy; - return efl_access_parent_get(efl_super(obj, EFL_UI_WIN_SOCKET_CLASS)); + return efl_provider_find(efl_parent_get(efl_super(obj, EFL_UI_WIN_SOCKET_CLASS)), EFL_ACCESS_MIXIN); } // #include "efl_ui_win_socket.eo.c" diff --git a/src/lib/elementary/efl_ui_win_socket.eo b/src/lib/elementary/efl_ui_win_socket.eo index b6df630..aef655e 100644 --- a/src/lib/elementary/efl_ui_win_socket.eo +++ b/src/lib/elementary/efl_ui_win_socket.eo @@ -29,7 +29,7 @@ class Efl.Ui.Win_Socket (Efl.Ui.Win) Efl.Object.finalize; //TIZEN_ONLY(20171108): make atspi_proxy work Efl.Gfx.visible { set; } - Efl.Access.parent { get; } + Efl.Object.parent { get; } // } } diff --git a/src/lib/elementary/elm_atspi_bridge.c b/src/lib/elementary/elm_atspi_bridge.c index f79b420..fa294f8 100644 --- a/src/lib/elementary/elm_atspi_bridge.c +++ b/src/lib/elementary/elm_atspi_bridge.c @@ -1334,7 +1334,7 @@ _accessible_reading_material_get(const Eldbus_Service_Interface *iface, const El eldbus_message_iter_basic_append(iter, 'i', idx); /* is selected in parent */ - parent = efl_access_parent_get(obj); + parent = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); if (efl_isa(parent, EFL_ACCESS_SELECTION_INTERFACE)) { is_selected = efl_access_selection_is_child_selected(parent, idx); @@ -2776,7 +2776,7 @@ _socket_embedded(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus const char *bus, *path; Eo *bridge = _elm_atspi_bridge_get(); Eo *obj = _bridge_object_from_path(bridge, obj_path); - proxy = efl_access_parent_get(obj); + proxy = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); if (!efl_isa(proxy, ELM_ATSPI_PROXY_CLASS)) return eldbus_message_error_new(msg, "org.freedesktop.DBus.Error.Failed", "Unable to embed object."); @@ -2918,7 +2918,7 @@ _accessible_property_get(const Eldbus_Service_Interface *interface, const char * } else if (!strcmp(property, "Parent")) { - ret_obj = efl_access_parent_get(obj); + ret_obj = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); Efl_Access_Role role = EFL_ACCESS_ROLE_INVALID; role = efl_access_role_get(obj); if ((!ret_obj) && (EFL_ACCESS_ROLE_APPLICATION == role)) @@ -3645,7 +3645,7 @@ _collection_sort_order_reverse_canonical(struct collection_match_rule *rule, Ein /* Get the current nodes index in it's parent and the parent object. */ indexinparent = efl_access_index_in_parent_get(obj); - parent = efl_access_parent_get(obj); + parent = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); if ((indexinparent > 0) && ((max == 0) || (count < max))) { @@ -3701,7 +3701,7 @@ _collection_inorder(Eo *collection, struct collection_match_rule *rule, Eina_Lis while ((max == 0 || count < max) && obj && obj != collection) { Eo *parent; - parent = efl_access_parent_get(obj); + parent = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); idx = efl_access_index_in_parent_get(obj); count = _collection_sort_order_canonical(rule, list, count, max, parent, idx + 1, EINA_TRUE, NULL, EINA_TRUE, traverse); @@ -3779,7 +3779,7 @@ _collection_get_matches_from_handle(Eo *collection, Eo *current, struct collecti break; case ATSPI_Collection_TREE_RESTRICT_CHILDREN: idx = efl_access_index_in_parent_get(current); - parent = efl_access_parent_get(current); + parent = efl_provider_find(efl_parent_get(current), EFL_ACCESS_MIXIN); _collection_query(rule, sortby, &result, 0, max, parent, idx, EINA_FALSE, NULL, EINA_TRUE, traverse); break; case ATSPI_Collection_TREE_RESTRICT_SIBLING: @@ -3840,7 +3840,7 @@ _collection_get_matches_to_handle(Eo *obj, Eo *current, struct collection_match_ Eo *collection = obj; if (limit) - collection = efl_access_parent_get(obj); + collection = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); switch (tree) { @@ -4066,7 +4066,7 @@ _cache_item_reference_append_cb(Eo *bridge, Eo *data, Eldbus_Message_Iter *iter_ _bridge_iter_object_reference_append(bridge, iter_struct, root); Eo *parent = NULL; - parent = efl_access_parent_get(data); + parent = efl_provider_find(efl_parent_get(data), EFL_ACCESS_MIXIN); /* Marshall parent */ if ((!parent) && (EFL_ACCESS_ROLE_APPLICATION == role)) _object_desktop_reference_append(iter_struct); @@ -4412,12 +4412,12 @@ static unsigned char _accept_object(accessibility_navigation_pointer_table *tabl static Eina_Bool _target_validation_check(Eo *target, Eo *root) { Eo *parent; - parent = efl_access_parent_get(root); + parent = efl_provider_find(efl_parent_get(root), EFL_ACCESS_MIXIN); while (parent) { if (parent == target) return EINA_FALSE; - parent = efl_access_parent_get(parent); + parent = efl_provider_find(efl_parent_get(parent), EFL_ACCESS_MIXIN); } return EINA_TRUE; @@ -4494,14 +4494,14 @@ static Eina_List *_scrollable_parent_list_get(Eo *obj) if (obj) { - parent = efl_access_parent_get(obj); + parent = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); while (parent) { if (efl_isa(parent, ELM_INTERFACE_SCROLLABLE_MIXIN)) { ret = eina_list_append(ret, parent); } - parent = efl_access_parent_get(parent); + parent = efl_provider_find(efl_parent_get(parent), EFL_ACCESS_MIXIN); } } @@ -4958,7 +4958,7 @@ unsigned char _object_is_scrollable_impl(struct accessibility_navigation_pointer void *_get_parent_impl(struct accessibility_navigation_pointer_table *table EINA_UNUSED, void *ptr) { Eo *obj = (Eo*)ptr, *ret_obj; - ret_obj = efl_access_parent_get(obj); + ret_obj = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); return ret_obj; } diff --git a/src/lib/elementary/elm_atspi_proxy.c b/src/lib/elementary/elm_atspi_proxy.c index d19b7f2..4510294 100644 --- a/src/lib/elementary/elm_atspi_proxy.c +++ b/src/lib/elementary/elm_atspi_proxy.c @@ -149,7 +149,7 @@ _elm_atspi_proxy_efl_access_children_get(Eo *obj EINA_UNUSED, Elm_Atspi_Proxy_Da } EOLIAN Eo* -_elm_atspi_proxy_efl_access_parent_get(Eo *obj EINA_UNUSED, Elm_Atspi_Proxy_Data *_pd) +_elm_atspi_proxy_efl_object_parent_get(Eo *obj EINA_UNUSED, Elm_Atspi_Proxy_Data *_pd) { Eo *ret = NULL; if (_pd->type == ELM_ATSPI_PROXY_TYPE_PLUG) diff --git a/src/lib/elementary/elm_atspi_proxy.eo b/src/lib/elementary/elm_atspi_proxy.eo index 37e6cce..2bec2e2 100644 --- a/src/lib/elementary/elm_atspi_proxy.eo +++ b/src/lib/elementary/elm_atspi_proxy.eo @@ -42,7 +42,7 @@ class Elm.Atspi.Proxy (Efl.Ui.Widget) implements { Efl.Object.destructor; Efl.Access.children { get; } - Efl.Access.parent { get; } + Efl.Object.parent { get; } Efl.Ui.Widget.atspi; } events { diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c index 10a4dc7..7ed47a8 100644 --- a/src/lib/elementary/elm_entry.c +++ b/src/lib/elementary/elm_entry.c @@ -7808,7 +7808,7 @@ static void _anchor_rect_highlighted_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) { Eo *entry; - entry = efl_access_parent_get(obj); + entry = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); unsigned int dindex = (unsigned int)data; Evas_Textblock_Rectangle *r; @@ -7874,7 +7874,7 @@ _anchor_rect_unhighlighted_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) { Eo *entry; - entry = efl_access_parent_get(obj); + entry = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); ELM_ENTRY_DATA_GET(entry, sd); @@ -7894,7 +7894,7 @@ _anchor_rect_activated_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_ { Elm_Entry_Anchor_Info ei; Eo *entry; - entry = efl_access_parent_get(obj); + entry = efl_provider_find(efl_parent_get(obj), EFL_ACCESS_MIXIN); ELM_ENTRY_DATA_GET(entry, sd); diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c index 38c80f1..8f5ae44 100644 --- a/src/lib/elementary/elm_gengrid.c +++ b/src/lib/elementary/elm_gengrid.c @@ -4031,7 +4031,6 @@ _internal_elm_gengrid_clear(Evas_Object *obj, if (itn) itn->walking++; /* prevent early death of subitem */ if (VIEW(it)) _item_mouse_callbacks_del(it, VIEW(it)); - it->del_cb(it); efl_del(EO_OBJ(it)); if (itn) itn->walking--; } @@ -4107,7 +4106,6 @@ _item_select(Elm_Gen_Item *it) { if ((!it->walking) && (it->generation < sd->generation)) { - it->del_cb(it); efl_del(eo_it); sd->last_selected_item = NULL; } @@ -4147,7 +4145,6 @@ _elm_gengrid_item_new(Elm_Gengrid_Data *sd, it->func.func = func; it->func.data = func_data; - it->del_cb = (Ecore_Cb)_item_del; it->highlight_cb = (Ecore_Cb)_item_highlight; it->unhighlight_cb = (Ecore_Cb)_item_unhighlight; it->sel_cb = (Ecore_Cb)_item_select; @@ -4385,7 +4382,7 @@ _elm_gengrid_efl_ui_widget_screen_reader(Eo *obj EINA_UNUSED, Elm_Gengrid_Data * EINA_LIST_FOREACH(it->contents, l, content) { if (efl_isa(content, EFL_ACCESS_MIXIN)) - efl_access_parent_set(content, EO_OBJ(it)); + efl_parent_set(content, EO_OBJ(it)); } } else @@ -6228,7 +6225,7 @@ _elm_gengrid_item_efl_access_children_get(Eo *eo_it EINA_UNUSED, Elm_Gen_Item *i if (part && efl_isa(part, EFL_ACCESS_MIXIN)) { ret = eina_list_append(ret, part); - efl_access_parent_set(part, eo_it); + efl_parent_set(part, eo_it); } } } diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index 763337e..26c0b4d 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -6002,7 +6002,7 @@ _elm_genlist_efl_ui_widget_screen_reader(Eo *obj EINA_UNUSED, Elm_Genlist_Data * { if (efl_isa(content, EFL_ACCESS_MIXIN)) { - efl_access_parent_set(content, EO_OBJ(it)); + efl_parent_set(content, EO_OBJ(it)); efl_access_children_changed_added_signal_emit(EO_OBJ(it), content); } } @@ -8700,7 +8700,7 @@ _elm_genlist_item_efl_access_children_get(Eo *eo_it EINA_UNUSED, Elm_Gen_Item *i if (part && efl_isa(part, EFL_ACCESS_MIXIN)) { ret = eina_list_append(ret, part); - efl_access_parent_set(part, eo_it); + efl_parent_set(part, eo_it); } } } diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c index d424d82..1b55d57 100644 --- a/src/lib/elementary/elm_list.c +++ b/src/lib/elementary/elm_list.c @@ -668,8 +668,6 @@ _elm_list_deletions_process(Elm_List_Data *sd) { sd->items = eina_list_remove_list(sd->items, it->node); - /* issuing free because of "locking" item del pre hook */ - _elm_list_item_free(it); efl_del(EO_OBJ(it)); } @@ -2336,8 +2334,8 @@ _item_new(Evas_Object *obj, if (_elm_atspi_enabled()) { - if (it->icon) efl_access_parent_set(it->icon, eo_it); - if (it->end) efl_access_parent_set(it->end, eo_it); + if (it->icon) efl_parent_set(it->icon, eo_it); + if (it->end) efl_parent_set(it->end, eo_it); } /* access */ @@ -2497,10 +2495,6 @@ _elm_list_efl_canvas_group_group_del(Eo *obj, Elm_List_Data *sd) EINA_LIST_FREE(sd->items, eo_it) { - ELM_LIST_ITEM_DATA_GET(eo_it, it); - /* issuing free because of "locking" item del pre hook */ - _elm_list_item_free(it); - WIDGET(it) = NULL; efl_del(eo_it); } @@ -2570,8 +2564,8 @@ _elm_list_efl_ui_widget_screen_reader(Eo *obj EINA_UNUSED, Elm_List_Data *sd, Ei if (is_screen_reader) { ELM_LIST_ITEM_DATA_GET(eo_it, it); - if (it->icon) efl_access_parent_set(it->icon, eo_it); - if (it->end) efl_access_parent_set(it->end, eo_it); + if (it->icon) efl_parent_set(it->icon, eo_it); + if (it->end) efl_parent_set(it->end, eo_it); efl_access_added(eo_it); efl_access_children_changed_added_signal_emit(obj, eo_it); } @@ -2792,9 +2786,6 @@ _elm_list_clear(Eo *obj, Elm_List_Data *sd) EINA_LIST_FREE(sd->items, eo_it) { - ELM_LIST_ITEM_DATA_GET(eo_it, it); - /* issuing free because of "locking" item del pre hook */ - _elm_list_item_free(it); efl_del(eo_it); } diff --git a/src/lib/elementary/elm_list.eo b/src/lib/elementary/elm_list.eo index 14a83f3..cdcf704 100644 --- a/src/lib/elementary/elm_list.eo +++ b/src/lib/elementary/elm_list.eo @@ -37,7 +37,7 @@ enum Elm.List.Mode } class Elm.List (Efl.Ui.Layout, Elm.Interface_Scrollable, - Efl.Access.Widget.Action, Efl.Access.Selection, + Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Access, Efl.Ui.Clickable, Efl.Ui.Selectable, Efl.Ui.Legacy) { [[Elementary list class]] diff --git a/src/lib/elementary/elm_menu.c b/src/lib/elementary/elm_menu.c index 94bd613..db01aef 100644 --- a/src/lib/elementary/elm_menu.c +++ b/src/lib/elementary/elm_menu.c @@ -1393,10 +1393,12 @@ _elm_menu_item_efl_access_children_get(Eo *obj EINA_UNUSED, Elm_Menu_Item_Data * return eina_list_clone(sd->submenu.items); } -EOLIAN static Efl_Access* -_elm_menu_item_efl_access_parent_get(Eo *obj EINA_UNUSED, Elm_Menu_Item_Data *sd) +EOLIAN static Eo* +_elm_menu_item_efl_object_parent_get(Eo *obj, Elm_Menu_Item_Data *sd) { - return sd->parent ? EO_OBJ(sd->parent) : WIDGET(sd); + if (sd->parent) return EO_OBJ(sd->parent); + if (sd->base) return WIDGET(sd); + return efl_parent_get(efl_super(obj, ELM_MENU_ITEM_CLASS)); } EOLIAN static Efl_Access_Role diff --git a/src/lib/elementary/elm_menu_item.eo b/src/lib/elementary/elm_menu_item.eo index 6011399..4af98a6 100644 --- a/src/lib/elementary/elm_menu_item.eo +++ b/src/lib/elementary/elm_menu_item.eo @@ -59,12 +59,12 @@ class Elm.Menu.Item(Elm.Widget.Item, Efl.Access.Selection, implements { Efl.Object.constructor; Efl.Object.destructor; + Efl.Object.parent { get; } Elm.Widget.Item.disable; Elm.Widget.Item.signal_emit; Elm.Widget.Item.part_text { get; set; } Elm.Widget.Item.part_content { get; set; } Efl.Access.children { get; } - Efl.Access.parent { get; } Efl.Access.role { get; } Efl.Access.i18n_name { get; } Efl.Access.state_set { get; } diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c index 4075691..155076f 100644 --- a/src/lib/elementary/elm_toolbar.c +++ b/src/lib/elementary/elm_toolbar.c @@ -2522,7 +2522,7 @@ _item_new(Evas_Object *obj, icon_obj = elm_icon_add(VIEW(it)); if (_elm_atspi_enabled()) - if (icon_obj) efl_access_parent_set(icon_obj, eo_it); + if (icon_obj) efl_parent_set(icon_obj, eo_it); if (_elm_config->access_mode == ELM_ACCESS_MODE_ON) _access_widget_item_register(it); @@ -3019,7 +3019,7 @@ _elm_toolbar_efl_ui_widget_screen_reader(Eo *obj EINA_UNUSED, Elm_Toolbar_Data * { if (is_screen_reader) { - if (it->icon) efl_access_parent_set(it->icon, EO_OBJ(it)); + if (it->icon) efl_parent_set(it->icon, EO_OBJ(it)); efl_access_added(EO_OBJ(it)); efl_access_children_changed_added_signal_emit(obj, EO_OBJ(it)); } diff --git a/src/lib/elementary/elm_toolbar.eo b/src/lib/elementary/elm_toolbar.eo index 724726f..c1a1b98 100644 --- a/src/lib/elementary/elm_toolbar.eo +++ b/src/lib/elementary/elm_toolbar.eo @@ -24,7 +24,7 @@ enum Elm.Toolbar.Shrink_Mode } class Elm.Toolbar (Efl.Ui.Widget, Efl.Ui.Focus.Composition, Elm.Interface_Scrollable, Efl.Ui.Direction, - Efl.Access.Widget.Action, Efl.Access.Selection, + Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Access, Efl.Ui.Clickable, Efl.Ui.Selectable, Efl.Ui.Menu, Efl.Orientation, Efl.Ui.Legacy) { [[Elementary toolbar class]] diff --git a/src/lib/elementary_tizen/elm_genlist.c b/src/lib/elementary_tizen/elm_genlist.c index 891dda7..b88d016 100644 --- a/src/lib/elementary_tizen/elm_genlist.c +++ b/src/lib/elementary_tizen/elm_genlist.c @@ -6699,7 +6699,7 @@ _elm_genlist_efl_ui_widget_screen_reader(Eo *obj EINA_UNUSED, Elm_Genlist_Data * { if (efl_isa(content, EFL_ACCESS_MIXIN)) { - efl_access_parent_set(content, EO_OBJ(it)); + efl_parent_set(content, EO_OBJ(it)); efl_access_children_changed_added_signal_emit(EO_OBJ(it), content); } } @@ -9234,7 +9234,7 @@ _elm_genlist_item_efl_access_children_get(Eo *eo_it EINA_UNUSED, Elm_Gen_Item *i if (part && efl_isa(part, EFL_ACCESS_MIXIN)) { ret = eina_list_append(ret, part); - efl_access_parent_set(part, eo_it); + efl_parent_set(part, eo_it); } } } diff --git a/src/tests/elementary/elm_test_gengrid.c b/src/tests/elementary/elm_test_gengrid.c index 69d4b21..cec5f76 100644 --- a/src/tests/elementary/elm_test_gengrid.c +++ b/src/tests/elementary/elm_test_gengrid.c @@ -87,7 +87,7 @@ START_TEST(elm_atspi_children_parent) elm_gengrid_item_fields_update(it, "*.", ELM_GENGRID_ITEM_FIELD_CONTENT); ck_assert(content != NULL); - parent = efl_access_parent_get(content); + parent = efl_provider_find(efl_parent_get(content), EFL_ACCESS_MIXIN); ck_assert(it == parent); elm_shutdown(); diff --git a/src/tests/elementary/elm_test_list.c b/src/tests/elementary/elm_test_list.c index 0c5f5c4..f303ffa 100644 --- a/src/tests/elementary/elm_test_list.c +++ b/src/tests/elementary/elm_test_list.c @@ -231,6 +231,7 @@ END_TEST START_TEST(elm_atspi_children_parent) { Efl_Access *parent; + Elm_Object_Item *it; elm_init(1, NULL); Evas_Object *win = elm_win_add(NULL, "list", ELM_WIN_BASIC); @@ -239,15 +240,15 @@ START_TEST(elm_atspi_children_parent) Evas_Object *end = elm_icon_add(win); Evas_Object *list = elm_list_add(win); - elm_list_item_append(list, "First Element", icon, end, NULL, NULL); + it = elm_list_item_append(list, "First Element", icon, end, NULL, NULL); evas_object_show(list); - parent = efl_access_parent_get(icon); - ck_assert(list == parent); + parent = efl_provider_find(efl_parent_get(icon), EFL_ACCESS_MIXIN); + ck_assert(it == parent); - parent = efl_access_parent_get(end); - ck_assert(list == parent); + parent = efl_provider_find(efl_parent_get(end), EFL_ACCESS_MIXIN); + ck_assert(it == parent); elm_shutdown(); } -- 2.7.4