From 57d77c9041086ebbf84c2a30d93e95d47fc12705 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Mon, 25 Jul 2016 22:05:24 +0900 Subject: [PATCH] access: add API to get access object of given part --- NEWS | 1 + src/lib/elementary/elc_popup.c | 6 ++++++ src/lib/elementary/elm_main.c | 5 +++++ src/lib/elementary/elm_object.h | 11 +++++++++++ src/lib/elementary/elm_popup.eo | 1 + src/lib/elementary/elm_widget.c | 8 ++++++++ src/lib/elementary/elm_widget.eo | 9 +++++++++ src/tests/elementary/elm_test_popup.c | 20 ++++++++++++++++++++ 8 files changed, 61 insertions(+) diff --git a/NEWS b/NEWS index 9ea2b6977d..c539e32f43 100644 --- a/NEWS +++ b/NEWS @@ -240,6 +240,7 @@ Features: * eo base - add weak object refs as per jpeg needs * elput: Add API function to return output name associated with input device * Eo refcount: Split the refcount to private and public (user). + * access: Add API to get access object of given widget's part. Fixes: diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c index 28836efc40..02c2745623 100644 --- a/src/lib/elementary/elc_popup.c +++ b/src/lib/elementary/elc_popup.c @@ -1482,6 +1482,12 @@ _elm_popup_elm_widget_event(Eo *obj, Elm_Popup_Data *_pd EINA_UNUSED, Evas_Objec return EINA_TRUE; } +EOLIAN static Evas_Object* +_elm_popup_elm_widget_part_access_object_get(Eo *obj, Elm_Popup_Data *_pd EINA_UNUSED, const char *part) +{ + return _access_object_get(obj, part); +} + EOLIAN static void _elm_popup_efl_canvas_group_group_add(Eo *obj, Elm_Popup_Data *priv) { diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c index ccce58ac6a..f2033181ed 100644 --- a/src/lib/elementary/elm_main.c +++ b/src/lib/elementary/elm_main.c @@ -1925,3 +1925,8 @@ elm_object_focus_region_show_mode_get(const Evas_Object *obj) return elm_widget_focus_region_show_mode_get(obj); } +EAPI Evas_Object *elm_object_part_access_object_get(const Evas_Object *obj, const char *part) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL); + return elm_widget_part_access_object_get(obj, part); +} diff --git a/src/lib/elementary/elm_object.h b/src/lib/elementary/elm_object.h index 935e6a7eb9..00f9ee1b56 100644 --- a/src/lib/elementary/elm_object.h +++ b/src/lib/elementary/elm_object.h @@ -508,3 +508,14 @@ EAPI void elm_object_orientation_mode_disabled_set(Evas_Object *obj, Eina */ EAPI Eina_Bool elm_object_orientation_mode_disabled_get(const Evas_Object *obj); +/** + * Get the access object which is registered to part + * + * @param obj The Elementary widget + * @param part The widget's part name to get access object + * + * @since 1.18 + * + * @ingroup General + */ +EAPI Evas_Object *elm_object_part_access_object_get(const Evas_Object *obj, const char *part); diff --git a/src/lib/elementary/elm_popup.eo b/src/lib/elementary/elm_popup.eo index 93feda01d3..db33569fac 100644 --- a/src/lib/elementary/elm_popup.eo +++ b/src/lib/elementary/elm_popup.eo @@ -180,6 +180,7 @@ class Elm.Popup (Elm.Layout, Elm.Interface.Atspi_Widget_Action, Edje.Object) Elm.Widget.translate; Elm.Widget.sub_object_del; Elm.Widget.event; + Elm.Widget.part_access_object_get; Elm.Layout.text.set; Elm.Layout.text.get; Elm.Layout.sizing_eval; diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index d347bdcc27..9338418567 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -3696,6 +3696,14 @@ _elm_widget_focus_reconfigure(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED) _elm_widget_focus_move_policy_reload(obj); } +EOLIAN static Evas_Object* +_elm_widget_part_access_object_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED, const char *part) +{ + WRN("The %s widget does not implement the \"part_access_object_get\" functions.", + eo_class_name_get(eo_class_get(obj))); + return NULL; +} + EAPI void elm_widget_content_part_set(Evas_Object *obj, const char *part, diff --git a/src/lib/elementary/elm_widget.eo b/src/lib/elementary/elm_widget.eo index e495a4b405..3a181955da 100644 --- a/src/lib/elementary/elm_widget.eo +++ b/src/lib/elementary/elm_widget.eo @@ -837,6 +837,15 @@ abstract Elm.Widget (Efl.Canvas.Group, Elm.Interface.Atspi_Accessible, Elm.Inter } focus_reconfigure { } + part_access_object_get { + [[Get the access object of given part of the widget. + + @since 1.18]] + return: Efl.Canvas.Object; + params { + @in part: string; [[The object's part name to get access object]] + } + } } implements { class.constructor; diff --git a/src/tests/elementary/elm_test_popup.c b/src/tests/elementary/elm_test_popup.c index b284475441..03526ceef8 100644 --- a/src/tests/elementary/elm_test_popup.c +++ b/src/tests/elementary/elm_test_popup.c @@ -24,7 +24,27 @@ START_TEST (elm_atspi_role_get) } END_TEST +START_TEST (elm_object_part_access_object_get) +{ + Evas_Object *win, *popup, *access; + + elm_init(1, NULL); + elm_config_access_set(EINA_TRUE); + win = elm_win_add(NULL, "popup", ELM_WIN_BASIC); + + popup = elm_popup_add(win); + elm_object_part_text_set(popup, "title,text", "Title"); + evas_object_show(popup); + + access = elm_object_part_access_object_get(popup, "access.title"); + ck_assert(access != NULL); + + elm_shutdown(); +} +END_TEST + void elm_test_popup(TCase *tc) { tcase_add_test(tc, elm_atspi_role_get); + tcase_add_test(tc, elm_object_part_access_object_get); }