From: Kim Shinwoo <kimcinoo.efl@gmail.com>

Subject: [E-devel] [Patch][elm_widget] access hook

Real time setting would be necessary in case of running applications
which
have elm_layout or elm_widget_item.
If the access mode does not care of this, running applications should
restart. The attached for this. Please review the patch and give any
feedbacks. Thanks.



SVN revision: 73229
This commit is contained in:
Kim Shinwoo 2012-07-03 12:09:34 +00:00 committed by Carsten Haitzler
parent 06be3e5ab6
commit a060189012
3 changed files with 39 additions and 0 deletions

View File

@ -265,3 +265,7 @@
* Add elm_multibuttonentry_editable_set() and
elm_multibuttonentry_editable_get()
2012-07-3 Shinwoo Kim (kimcinoo)
* Add access hook to widget infra.

View File

@ -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,
@ -1074,6 +1075,16 @@ elm_widget_theme_hook_set(Evas_Object *obj,
COMPAT_SMART_DATA(sd)->theme = func;
}
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))
@ -1186,6 +1197,27 @@ elm_widget_signal_callback_del_hook_set(Evas_Object *obj,
COMPAT_SMART_DATA(sd)->callback_del = func;
}
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)
{

View File

@ -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(Evas_Object *obj, void (*func)(E
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);