access: add API to get access object of given part
authorShinwoo Kim <cinoo.kim@samsung.com>
Mon, 25 Jul 2016 13:05:24 +0000 (22:05 +0900)
committerShinwoo Kim <cinoo.kim@samsung.com>
Mon, 25 Jul 2016 13:05:24 +0000 (22:05 +0900)
NEWS
src/lib/elementary/elc_popup.c
src/lib/elementary/elm_main.c
src/lib/elementary/elm_object.h
src/lib/elementary/elm_popup.eo
src/lib/elementary/elm_widget.c
src/lib/elementary/elm_widget.eo
src/tests/elementary/elm_test_popup.c

diff --git a/NEWS b/NEWS
index 9ea2b69..c539e32 100644 (file)
--- 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:
 
index 28836ef..02c2745 100644 (file)
@@ -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)
 {
index ccce58a..f203318 100644 (file)
@@ -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);
+}
index 935e6a7..00f9ee1 100644 (file)
@@ -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);
index 93feda0..db33569 100644 (file)
@@ -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;
index d347bdc..9338418 100644 (file)
@@ -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,
index e495a4b..3a18195 100644 (file)
@@ -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;
index b284475..03526ce 100644 (file)
@@ -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);
 }