kimcinoo pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=57d77c9041086ebbf84c2a30d93e95d47fc12705

commit 57d77c9041086ebbf84c2a30d93e95d47fc12705
Author: Shinwoo Kim <[email protected]>
Date:   Mon Jul 25 22:05:24 2016 +0900

    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 9ea2b69..c539e32 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 28836ef..02c2745 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 ccce58a..f203318 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 935e6a7..00f9ee1 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 93feda0..db33569 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 d347bdc..9338418 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 e495a4b..3a18195 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 b284475..03526ce 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);
 }

-- 


Reply via email to