create and use ELM_WIDGET_ITEM for elm widget structs to ensure location/name
authordiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 21 Oct 2011 00:45:19 +0000 (00:45 +0000)
committerdiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 21 Oct 2011 00:45:19 +0000 (00:45 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@64218 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

14 files changed:
src/lib/elc_ctxpopup.c
src/lib/elc_hoversel.c
src/lib/elc_naviframe.c
src/lib/elm_diskselector.c
src/lib/elm_flipselector.c
src/lib/elm_gengrid.c
src/lib/elm_genlist.c
src/lib/elm_index.c
src/lib/elm_list.c
src/lib/elm_menu.c
src/lib/elm_segment_control.c
src/lib/elm_slideshow.c
src/lib/elm_toolbar.c
src/lib/elm_widget.h

index 7231b74..bb21e4b 100644 (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;
index 50ddba2..493fd41 100644 (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;
index 45eff14..aac8561 100644 (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;
index b9ee05c..13579ea 100644 (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;
index 7168b35..13c503f 100644 (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;
index d447495..ceba53d 100644 (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;
index b9c7c92..f26d37b 100644 (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;
index fba1729..45a0404 100644 (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;
index e6139fc..1af5329 100644 (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;
index 02d85ba..1168574 100644 (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;
index fc0b7ce..9238ddd 100644 (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;
index 06247f8..7e2d363 100644 (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;
 
index 35b231e..e6fa564 100644 (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;
index 9a68ea5..f347b5d 100644 (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 { \