create and use ELM_WIDGET_ITEM for elm widget structs to ensure location/name

SVN revision: 64218
This commit is contained in:
Mike Blumenkrantz 2011-10-21 00:45:19 +00:00
parent 474c285562
commit 4ad1c5f0db
14 changed files with 16 additions and 21 deletions

View File

@ -6,7 +6,7 @@ typedef struct _Elm_Ctxpopup_Item Elm_Ctxpopup_Item;
struct _Elm_Ctxpopup_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
const char *label;
Evas_Object *icon;
Evas_Smart_Cb func;

View File

@ -14,7 +14,7 @@ struct _Widget_Data
struct _Elm_Hoversel_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
const char *label;
const char *icon_file;
const char *icon_group;

View File

@ -33,7 +33,7 @@ struct _Elm_Naviframe_Text_Item_Pair
struct _Elm_Naviframe_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
EINA_INLIST;
Eina_Inlist *content_list;
Eina_Inlist *text_list;

View File

@ -41,7 +41,7 @@ struct _Widget_Data
struct _Elm_Diskselector_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
Eina_List *node;
Evas_Object *icon;
const char *label;

View File

@ -26,7 +26,7 @@
struct _Elm_Flipselector_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
const char *label;
Evas_Smart_Cb func;
void *data;

View File

@ -16,7 +16,7 @@
struct _Elm_Gengrid_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
EINA_INLIST;
Evas_Object *spacer;
const Elm_Gengrid_Item_Class *itc;

View File

@ -16,7 +16,7 @@ typedef struct _Item_Cache Item_Cache;
struct _Elm_Genlist_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
EINA_INLIST;
Widget_Data *wd;
const Elm_Genlist_Item_Class *itc;

View File

@ -21,7 +21,7 @@ struct _Widget_Data
struct _Elm_Index_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
const char *letter;
int level;
Eina_Bool selected : 1;

View File

@ -32,7 +32,7 @@ struct _Widget_Data
struct _Elm_List_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
Widget_Data *wd;
Eina_List *node;
const char *label;

View File

@ -5,7 +5,7 @@ typedef struct _Widget_Data Widget_Data;
struct _Elm_Menu_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
Elm_Menu_Item *parent;
Evas_Object *content;
const char *icon_str;

View File

@ -15,7 +15,7 @@ struct _Widget_Data
struct _Elm_Segment_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
Evas_Object *icon;
const char *label;
int seg_index;

View File

@ -5,7 +5,7 @@ typedef struct _Widget_Data Widget_Data;
struct _Elm_Slideshow_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
Eina_List *l, *l_built;

View File

@ -27,7 +27,7 @@ struct _Widget_Data
struct _Elm_Toolbar_Item
{
Elm_Widget_Item base;
ELM_WIDGET_ITEM;
EINA_INLIST;
const char *label;
const char *icon_str;

View File

@ -240,6 +240,7 @@ 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 */
struct _Elm_Widget_Item
{
/* ef1 ~~ efl, el3 ~~ elm */
@ -264,14 +265,14 @@ struct _Elm_Widget_Item
struct _Elm_Object_Item
{
Elm_Widget_Item it;
ELM_WIDGET_ITEM;
};
#define ELM_NEW(t) calloc(1, sizeof(t))
#define ELM_OBJ_ITEM_CHECK_OR_RETURN(it, ...) \
ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item *) (it), __VA_ARGS__); \
ELM_CHECK_WIDTYPE(it->it.widget, widtype) __VA_ARGS__;
ELM_CHECK_WIDTYPE(it->base.widget, widtype) __VA_ARGS__;
EAPI Eina_Bool elm_widget_api_check(int ver);
EAPI Evas_Object *elm_widget_add(Evas *evas);
@ -621,12 +622,6 @@ EAPI void elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out
#define elm_widget_item_signal_emit_hook_set(item, func) \
_elm_widget_item_signal_emit_hook_set((Elm_Widget_Item *)item, (Elm_Widget_On_Signal_Emit_Cb)func)
/**
* Cast and ensure the given pointer is an Elm_Widget_Item or return NULL.
*/
#define ELM_WIDGET_ITEM(item) \
(((item) && (EINA_MAGIC_CHECK(item, ELM_WIDGET_ITEM_MAGIC))) ? \
((Elm_Widget_Item *)(item)) : NULL)
#define ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, ...) \
do { \