elementary/widget - +del_pre_hook

now elm_object_item_del is exposed to users, 
this callback is used for widgets to use internally.



SVN revision: 67004
This commit is contained in:
ChunEon Park 2012-01-10 00:02:58 +00:00
parent 917fbe7370
commit aac0e16d03
2 changed files with 35 additions and 9 deletions

View File

@ -2829,6 +2829,9 @@ _elm_widget_item_del(Elm_Widget_Item *item)
if (item->del_cb)
item->del_cb((void *)item->data, item->widget, item);
if (item->on_del_pre_cb)
item->on_del_pre_cb((Elm_Object_Item *) item);
if (item->view)
evas_object_del(item->view);
@ -2848,6 +2851,16 @@ _elm_widget_item_del(Elm_Widget_Item *item)
free(item);
}
EAPI void
_elm_widget_item_del_pre_hook_set(Elm_Widget_Item *item, Elm_Widget_Item_On_Del_Pre_Cb func)
{
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
if ((item->on_del_pre_cb) && (item->on_del_pre_cb != func))
WRN("You're replacing a previously set del_pre_cb %p of item %p with %p", item->on_del_pre_cb, item, func);
item->on_del_pre_cb = func;
}
/**
* @internal
*

View File

@ -202,6 +202,7 @@ typedef Evas_Object *(*Elm_Widget_On_Content_Get_Cb)(const void *data,
typedef Evas_Object *(*Elm_Widget_On_Content_Unset_Cb)(const void *data, const char *part);
typedef void (*Elm_Widget_On_Signal_Emit_Cb)(void *data, const char *emission, const char *source);
typedef void (*Elm_Widget_On_Disable_Set_Cb)(void *data);
typedef void (*Elm_Widget_Item_On_Del_Pre_Cb)(Elm_Object_Item *it);
#define ELM_ACCESS_TYPE 0 // when reading out widget or item this is read first
#define ELM_ACCESS_INFO 1 // next read is info - this is normally label
@ -241,20 +242,28 @@ EAPI void _elm_access_object_register(Evas_Object *obj, Evas_Object
EAPI void _elm_access_item_register(Elm_Widget_Item *item, Evas_Object *hoverobj);
EAPI Eina_Bool _elm_access_2nd_click_timeout(Evas_Object *obj);
#define ELM_WIDGET_ITEM Elm_Widget_Item base /**< put this as the first member in your widget item struct */
/**< put this as the first member in your widget item struct */
#define ELM_WIDGET_ITEM Elm_Widget_Item base
struct _Elm_Widget_Item
{
/* ef1 ~~ efl, el3 ~~ elm */
/* ef1 ~~ efl, el3 ~~ elm */
#define ELM_WIDGET_ITEM_MAGIC 0xef1e1301
EINA_MAGIC;
/* simple accessor macros */
#define VIEW(X) X->base.view
#define WIDGET(X) X->base.widget
Evas_Object *widget; /**< the owner widget that owns this item */
Evas_Object *view; /**< the base view object */
const void *data; /**< item specific data */
Evas_Smart_Cb del_cb; /**< used to notify the item is being deleted */
/**< the owner widget that owns this item */
Evas_Object *widget;
/**< the base view object */
Evas_Object *view;
/**< item specific data */
const void *data;
/**< used to notify the item is being deleted */
Evas_Smart_Cb del_cb;
/**< don't expose this callback call */
Elm_Widget_Item_On_Del_Pre_Cb on_del_pre_cb;
Elm_Widget_On_Content_Set_Cb on_content_set_func;
Elm_Widget_On_Content_Get_Cb on_content_get_func;
Elm_Widget_On_Content_Unset_Cb on_content_unset_func;
@ -464,6 +473,7 @@ EAPI void _elm_widget_item_access_info_set(Elm_Widget_Item *item, co
EAPI void _elm_widget_item_disabled_set(Elm_Widget_Item *item, Eina_Bool disabled);
EAPI Eina_Bool _elm_widget_item_disabled_get(const Elm_Widget_Item *item);
EAPI void _elm_widget_item_disable_set_hook_set(Elm_Widget_Item *item, Elm_Widget_On_Disable_Set_Cb func);
EAPI void _elm_widget_item_del_pre_hook_set(Elm_Widget_Item *item, Elm_Widget_Item_On_Del_Pre_Cb func);
/* debug function. don't use it unless you are tracking parenting issues */
EAPI void elm_widget_tree_dump(const Evas_Object *top);
@ -637,15 +647,18 @@ EAPI void elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out
*/
#define elm_widget_item_disabled_get(item) \
_elm_widget_item_disabled_get((Elm_Widget_Item *)item)
EAPI Eina_Bool _elm_widget_item_disabled_get(const Elm_Widget_Item *item);
/**
* Convenience function to query disable set hook.
* @see _elm_widget_item_disable_set_hook_set()
*/
#define elm_widget_item_disable_set_hook_set(item, func) \
_elm_widget_item_disable_set_hook_set((Elm_Widget_Item *)item, (Elm_Widget_On_Disable_Set_Cb)func)
/**
* Convenience function to query del pre hook.
* @see _elm_widget_item_del_pre_hook_set()
*/
#define elm_widget_item_del_pre_hook_set(item, func) \
_elm_widget_item_del_pre_hook_set((Elm_Widget_Item *)item, (Elm_Widget_Item_On_Del_Pre_Cb)func)
#define ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, ...) \
do { \