Index: src/lib/elm_widget.h
===================================================================
--- src/lib/elm_widget.h	(리비전 73125)
+++ src/lib/elm_widget.h	(작업 사본)
@@ -425,6 +425,7 @@ typedef struct _Elm_Widget_Smart_Class
 
    Eina_Bool        (*sub_object_del)(Evas_Object *obj,
                                       Evas_Object *sobj); /**< 'Virtual' function handling sub objects being removed */
+   void             (*access)(Evas_Object *obj, Eina_Bool is_access); /**< 'Virtual' function on the widget being set access */
 } Elm_Widget_Smart_Class;
 
 /**
@@ -610,12 +611,14 @@ EAPI void             elm_widget_focus_hook_set(Ev
 EAPI void             elm_widget_activate_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj));
 EAPI void             elm_widget_disable_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj));
 EAPI void             elm_widget_theme_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj));
+EAPI void             elm_widget_access_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj, Eina_Bool is_access));
 EAPI void             elm_widget_translate_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj));
 EAPI void             elm_widget_event_hook_set(Evas_Object *obj, Eina_Bool (*func)(Evas_Object *obj, Evas_Object *source, Evas_Callback_Type type, void *event_info));
 EAPI void             elm_widget_changed_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj));
 EAPI void             elm_widget_signal_emit_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj, const char *emission, const char *source));
 EAPI void             elm_widget_signal_callback_add_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data));
 EAPI void             elm_widget_signal_callback_del_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data));
+EAPI Eina_Bool        elm_widget_access(Evas_Object *obj, Eina_Bool is_access);
 EAPI Eina_Bool        elm_widget_theme(Evas_Object *obj);
 EAPI void             elm_widget_theme_specific(Evas_Object *obj, Elm_Theme *th, Eina_Bool force);
 EAPI void             elm_widget_translate(Evas_Object *obj);
Index: src/lib/elm_widget.c
===================================================================
--- src/lib/elm_widget.c	(리비전 73125)
+++ src/lib/elm_widget.c	(작업 사본)
@@ -82,6 +82,7 @@ typedef struct _Elm_Widget_Compat_Smart_Data
    void (*activate)(Evas_Object *obj);
    void (*disable)(Evas_Object *obj);
    void (*theme)(Evas_Object *obj);
+   void (*access)(Evas_Object *obj, Eina_Bool is_access);
    void (*translate)(Evas_Object *obj);
    Eina_Bool (*event)(Evas_Object *obj,
                       Evas_Object *source,
@@ -1075,6 +1076,16 @@ elm_widget_theme_hook_set(Evas_Object *obj,
 }
 
 EAPI void
+elm_widget_access_hook_set(Evas_Object *obj,
+                           void       (*func)(Evas_Object *obj,
+                                              Eina_Bool is_access))
+{
+   API_ENTRY return;
+
+   COMPAT_SMART_DATA(sd)->access = func;
+}
+
+EAPI void
 elm_widget_translate_hook_set(Evas_Object *obj,
                               void       (*func)(Evas_Object *obj))
 {
@@ -1187,6 +1198,27 @@ elm_widget_signal_callback_del_hook_set(Evas_Objec
 }
 
 EAPI Eina_Bool
+elm_widget_access(Evas_Object *obj, Eina_Bool is_access)
+{
+   const Eina_List *l;
+   Evas_Object *child;
+   Eina_Bool ret = EINA_TRUE;
+
+   API_ENTRY return EINA_FALSE;
+   EINA_LIST_FOREACH(sd->subobjs, l, child)
+     ret &= elm_widget_access(child, is_access);
+
+   if (_elm_legacy_is(obj) && COMPAT_SMART_DATA(sd)->access)
+     COMPAT_SMART_DATA(sd)->access(obj, is_access);
+   else if (sd->api && sd->api->access)
+     sd->api->access(obj, is_access);
+   else
+     return EINA_FALSE;
+
+   return ret;
+}
+
+EAPI Eina_Bool
 elm_widget_theme(Evas_Object *obj)
 {
    const Eina_List *l;
