This avoids leaks.
return _efl_ui_layout_pack_proxy_get((Eo *) obj, type, part);
case EFL_CANVAS_LAYOUT_PART_TYPE_TEXT:
case EFL_CANVAS_LAYOUT_PART_TYPE_TEXTBLOCK:
- return ELM_PART_OVERRIDE_IMPLEMENT(EFL_UI_LAYOUT_PART_TEXT_CLASS);
+ return ELM_PART_IMPLEMENT(EFL_UI_LAYOUT_PART_TEXT_CLASS, obj, part);
case EFL_CANVAS_LAYOUT_PART_TYPE_SWALLOW:
- return ELM_PART_OVERRIDE_IMPLEMENT(EFL_UI_LAYOUT_PART_CONTENT_CLASS);
+ return ELM_PART_IMPLEMENT(EFL_UI_LAYOUT_PART_CONTENT_CLASS, obj, part);
case EFL_CANVAS_LAYOUT_PART_TYPE_NONE:
DBG("No such part '%s' in group '%s'", part, sd->group);
return NULL;
default:
- return ELM_PART_OVERRIDE_IMPLEMENT(EFL_UI_LAYOUT_PART_CLASS);
+ return ELM_PART_IMPLEMENT(EFL_UI_LAYOUT_PART_CLASS, obj, part);
}
}
{
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS);
- ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_set(sd, pd->part, cursor));
+ return _efl_ui_layout_part_cursor_set(sd, pd->part, cursor);
}
EOLIAN static const char *
{
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS);
- ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_get(sd, pd->part));
+ return _efl_ui_layout_part_cursor_get(sd, pd->part);
}
EOLIAN static Eina_Bool
{
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS);
- ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_style_set(sd, pd->part, style));
+ return _efl_ui_layout_part_cursor_style_set(sd, pd->part, style);
}
EOLIAN static const char *
{
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS);
- ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_style_get(sd, pd->part));
+ return _efl_ui_layout_part_cursor_style_get(sd, pd->part);
}
EOLIAN static Eina_Bool
{
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS);
- ELM_PART_RETURN_VAL(_efl_ui_layout_part_cursor_engine_only_set(sd, pd->part, !allow));
+ return _efl_ui_layout_part_cursor_engine_only_set(sd, pd->part, !allow);
}
EOLIAN static Eina_Bool
{
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Layout_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS);
- ELM_PART_RETURN_VAL(!_efl_ui_layout_part_cursor_engine_only_get(sd, pd->part));
+ return !_efl_ui_layout_part_cursor_engine_only_get(sd, pd->part);
}
/* Efl.Ui.Layout.Part_Content */
Eina_Iterator *it;
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
it = evas_object_box_iterator_new(pack);
- ELM_PART_RETURN_VAL(_part_item_iterator_create(obj, it, NULL));
+ return _part_item_iterator_create(obj, it, NULL);
}
EOLIAN static int
_efl_ui_layout_part_box_efl_container_content_count(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Box_Data *pd)
{
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
- ELM_PART_RETURN_VAL(evas_obj_box_count(pack));
+ return evas_obj_box_count(pack);
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_box_efl_pack_pack_clear(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Box_Data *pd)
{
- ELM_PART_RETURN_VAL(_efl_ui_layout_box_remove_all(pd->obj, pd->sd, pd->part, EINA_TRUE));
+ return _efl_ui_layout_box_remove_all(pd->obj, pd->sd, pd->part, EINA_TRUE);
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_box_efl_pack_unpack_all(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Box_Data *pd)
{
- ELM_PART_RETURN_VAL(_efl_ui_layout_box_remove_all(pd->obj, pd->sd, pd->part, EINA_FALSE));
+ return _efl_ui_layout_box_remove_all(pd->obj, pd->sd, pd->part, EINA_FALSE);
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_box_efl_pack_unpack(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Box_Data *pd, Efl_Gfx *subobj)
{
- ELM_PART_RETURN_VAL(_efl_ui_layout_box_remove(pd->obj, pd->sd, pd->part, subobj) != NULL);
+ return _efl_ui_layout_box_remove(pd->obj, pd->sd, pd->part, subobj) != NULL;
}
EOLIAN static Eina_Bool
EOLIAN static Eina_Bool
_efl_ui_layout_part_box_efl_pack_pack(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Box_Data *pd, Efl_Gfx *subobj)
{
- ELM_PART_RETURN_VAL(_efl_ui_layout_box_append(pd->obj, pd->sd, pd->part, subobj));
+ return _efl_ui_layout_box_append(pd->obj, pd->sd, pd->part, subobj);
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_box_efl_pack_linear_pack_begin(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Box_Data *pd, Efl_Gfx *subobj)
{
- ELM_PART_RETURN_VAL(_efl_ui_layout_box_prepend(pd->obj, pd->sd, pd->part, subobj));
+ return _efl_ui_layout_box_prepend(pd->obj, pd->sd, pd->part, subobj);
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_box_efl_pack_linear_pack_end(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Box_Data *pd, Efl_Gfx *subobj)
{
- ELM_PART_RETURN_VAL(_efl_ui_layout_box_append(pd->obj, pd->sd, pd->part, subobj));
+ return _efl_ui_layout_box_append(pd->obj, pd->sd, pd->part, subobj);
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_box_efl_pack_linear_pack_before(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Box_Data *pd, Efl_Gfx *subobj, const Efl_Gfx *existing)
{
- ELM_PART_RETURN_VAL(_efl_ui_layout_box_insert_before(pd->obj, pd->sd, pd->part, subobj, existing));
+ return _efl_ui_layout_box_insert_before(pd->obj, pd->sd, pd->part, subobj, existing);
}
EOLIAN static Eina_Bool
int index;
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
index = efl_pack_index_get(pack, existing);
- if (index < 0) ELM_PART_RETURN_VAL(EINA_FALSE);
+ if (index < 0) return EINA_FALSE;
other = efl_pack_content_get(pack, index + 1);
if (other)
- ELM_PART_RETURN_VAL(_efl_ui_layout_box_insert_before(pd->obj, pd->sd, pd->part, subobj, other));
+ return _efl_ui_layout_box_insert_before(pd->obj, pd->sd, pd->part, subobj, other);
- ELM_PART_RETURN_VAL(efl_pack_end(obj, subobj));
+ return efl_pack_end(obj, subobj);
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_box_efl_pack_linear_pack_at(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Box_Data *pd, Efl_Gfx *subobj, int index)
{
- ELM_PART_RETURN_VAL(_efl_ui_layout_box_insert_at(pd->obj, pd->sd, pd->part, subobj, index));
+ return _efl_ui_layout_box_insert_at(pd->obj, pd->sd, pd->part, subobj, index);
}
EOLIAN static Efl_Gfx *
priv = efl_data_scope_get(pack, EVAS_BOX_CLASS);
opt = eina_list_nth(priv->children, index);
- if (!opt) ELM_PART_RETURN_VAL(NULL);
- ELM_PART_RETURN_VAL(opt->obj);
+ if (!opt) return NULL;
+ return opt->obj;
}
EOLIAN static Efl_Gfx *
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
subobj = efl_pack_content_get(pack, index);
- if (!subobj) ELM_PART_RETURN_VAL(NULL);
+ if (!subobj) return NULL;
if (efl_pack_unpack(obj, subobj))
- ELM_PART_RETURN_VAL(subobj);
+ return subobj;
ERR("failed to remove %p from %p (item %d)", subobj, pd->obj, index);
- ELM_PART_RETURN_VAL(NULL);
+ return NULL;
}
EOLIAN static int
_efl_ui_layout_part_box_efl_pack_linear_pack_index_get(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Box_Data *pd, const Efl_Gfx *subobj)
{
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
- ELM_PART_RETURN_VAL(efl_pack_index_get(pack, subobj));
+ return efl_pack_index_get(pack, subobj);
}
EOLIAN static Efl_Ui_Dir
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EFL_UI_DIR_DEFAULT);
- ELM_PART_RETURN_VAL(efl_ui_direction_get(efl_part(wd->resize_obj, pd->part)));
+ return efl_ui_direction_get(efl_part(wd->resize_obj, pd->part));
}
it = evas_object_table_iterator_new(pack);
- ELM_PART_RETURN_VAL(_part_item_iterator_create(obj, it, NULL));
+ return _part_item_iterator_create(obj, it, NULL);
}
EOLIAN static int
_efl_ui_layout_part_table_efl_container_content_count(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd)
{
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
- ELM_PART_RETURN_VAL(evas_obj_table_count(pack));
+ return evas_obj_table_count(pack);
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_table_efl_pack_pack_clear(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd)
{
- ELM_PART_RETURN_VAL(_efl_ui_layout_table_clear(pd->obj, pd->sd, pd->part, EINA_TRUE));
+ return _efl_ui_layout_table_clear(pd->obj, pd->sd, pd->part, EINA_TRUE);
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_table_efl_pack_unpack_all(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd)
{
- ELM_PART_RETURN_VAL(_efl_ui_layout_table_clear(pd->obj, pd->sd, pd->part, EINA_FALSE));
+ return _efl_ui_layout_table_clear(pd->obj, pd->sd, pd->part, EINA_FALSE);
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_table_efl_pack_unpack(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd, Efl_Gfx *subobj)
{
- if (!subobj) ELM_PART_RETURN_VAL(EINA_FALSE);
- ELM_PART_RETURN_VAL(_efl_ui_layout_table_unpack(pd->obj, pd->sd, pd->part, subobj) == subobj);
+ if (!subobj) return EINA_FALSE;
+ return _efl_ui_layout_table_unpack(pd->obj, pd->sd, pd->part, subobj) == subobj;
}
EOLIAN static Eina_Bool
EOLIAN static Eina_Bool
_efl_ui_layout_part_table_efl_pack_grid_pack_grid(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd, Efl_Gfx *subobj, int col, int row, int colspan, int rowspan)
{
- ELM_PART_RETURN_VAL(_efl_ui_layout_table_pack(pd->obj, pd->sd, pd->part, subobj, col, row, colspan, rowspan));
+ return _efl_ui_layout_table_pack(pd->obj, pd->sd, pd->part, subobj, col, row, colspan, rowspan);
}
EOLIAN static Efl_Gfx *
_efl_ui_layout_part_table_efl_pack_grid_grid_content_get(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd, int col, int row)
{
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
- ELM_PART_RETURN_VAL(evas_object_table_child_get(pack, col, row));
+ return evas_object_table_child_get(pack, col, row);
}
EOLIAN static Eina_Iterator *
}
}
- ELM_PART_RETURN_VAL(_part_item_iterator_create(pd->obj, eina_list_iterator_new(l), l));
+ return _part_item_iterator_create(pd->obj, eina_list_iterator_new(l), l);
}
EOLIAN static Eina_Bool
if (colspan) *colspan = cs;
if (rowspan) *rowspan = rs;
- ELM_PART_RETURN_VAL(ret);
+ return ret;
}
EOLIAN static void
int cols, rows;
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
evas_object_table_col_row_size_get(pack, &cols, &rows);
- ELM_PART_RETURN_VAL(cols);
+ return cols;
}
EOLIAN static int
int cols, rows;
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
evas_object_table_col_row_size_get(pack, &cols, &rows);
- ELM_PART_RETURN_VAL(rows);
+ return rows;
}
#include "efl_ui_layout_part_box.eo.c"
// Progress bars are dragable types
if (edje_object_part_drag_dir_get(wd->resize_obj, part) != EFL_UI_DRAG_DIR_NONE)
- return ELM_PART_OVERRIDE_IMPLEMENT(EFL_UI_PROGRESSBAR_PART_CLASS);
+ return ELM_PART_IMPLEMENT(EFL_UI_PROGRESSBAR_PART_CLASS, obj, part);
return efl_part(efl_super(obj, MY_CLASS), part);
}
Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS);
_progressbar_part_value_set(pd->obj, sd, pd->part, val);
- ELM_PART_RETURN_VOID;
}
EOLIAN static double
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS);
- ELM_PART_RETURN_VAL(_progressbar_part_value_get(sd, pd->part));
+ return _progressbar_part_value_get(sd, pd->part);
}
#include "efl_ui_progressbar_part.eo.c"
ERR("Evas only handles premultiplied colors (0 <= R,G,B <= A <= 255)");
_efl_ui_win_part_color_set(pd->obj, sd, pd->part, r, g, b, a);
- ELM_PART_RETURN_VOID;
}
static void
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Win_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS);
_efl_ui_win_part_color_get(pd->obj, sd, pd->part, r, g, b, a);
- ELM_PART_RETURN_VOID;
}
static Eina_Bool
{
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Win_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS);
- ELM_PART_RETURN_VAL(_efl_ui_win_part_file_set(pd->obj, sd, pd->part, file, key));
+ return _efl_ui_win_part_file_set(pd->obj, sd, pd->part, file, key);
}
static void
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Win_Data *sd = efl_data_scope_get(pd->obj, MY_CLASS);
_efl_ui_win_part_file_get(pd->obj, sd, pd->part, file, key);
- ELM_PART_RETURN_VOID;
}
ELM_PART_OVERRIDE(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data)
#define EFL_CANVAS_OBJECT_PROTECTED
#define EFL_CANVAS_GROUP_PROTECTED
#define EFL_CANVAS_GROUP_BETA
+#define EFL_OBJECT_BETA
+#define EFL_OBJECT_PROTECTED
//#define ELM_PART_HOOK do { ERR("%s@%p:%s [%d]", efl_class_name_get(pd->obj), pd->obj, pd->part, (int) pd->temp); } while(0)
#define ELM_PART_HOOK do {} while(0)
-//#define ELM_PART_REF(obj, pd) do { if (!(pd->temp++)) efl_ref(obj); } while(0)
-#define ELM_PART_UNREF(obj, pd) do { if (pd->temp) { if (!(--pd->temp)) efl_del(obj); } } while(0)
-#define ELM_PART_RETURN_VAL(a) do { ELM_PART_HOOK; typeof(a) _ret = a; ELM_PART_UNREF(obj, pd); return _ret; } while(0)
-#define ELM_PART_RETURN_VOID do { ELM_PART_HOOK; ELM_PART_UNREF(obj, pd); return; } while(0)
-//#define ELM_PART_CALL(a) ({ ELM_PART_REF(obj, pd); a; })
-
typedef struct _Elm_Part_Data Elm_Part_Data;
struct _Elm_Part_Data
{
Eo *obj;
Eina_Tmpstr *part;
- unsigned char temp;
};
// Note: this generic implementation can be improved to support part object
return EINA_FALSE;
}
-#define ELM_PART_OVERRIDE_IMPLEMENT(PART_CLASS) ({ \
- Eo *proxy = efl_add(PART_CLASS, (Eo *) obj); \
+#define ELM_PART_IMPLEMENT(PART_CLASS, _obj, _part) ({ \
+ EINA_SAFETY_ON_NULL_RETURN_VAL(_obj, NULL); \
+ EINA_SAFETY_ON_NULL_RETURN_VAL(_part, NULL); \
+ Eo *proxy = efl_add(PART_CLASS, (Eo *) _obj); \
Elm_Part_Data *pd = efl_data_scope_get(proxy, EFL_UI_WIDGET_PART_CLASS); \
- if (pd) \
- { \
- pd->obj = (Eo *) obj; \
- pd->part = eina_tmpstr_add(part); \
- pd->temp = 1; \
- } \
+ EINA_SAFETY_ON_NULL_RETURN_VAL(pd, NULL); \
+ pd->obj = (Eo *) _obj; \
+ pd->part = eina_tmpstr_add(_part); \
+ efl_allow_parent_unref_set(proxy, 1); \
+ efl_auto_unref_set(proxy, 1); \
proxy; })
#define ELM_PART_OVERRIDE_ONLY_ALIASES(type, TYPE, typedata, aliases) \
{ \
EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); \
if (_elm_part_alias_find(aliases, part)) \
- return ELM_PART_OVERRIDE_IMPLEMENT(TYPE ## _PART_CLASS); \
+ return ELM_PART_IMPLEMENT(TYPE ## _PART_CLASS, obj, part); \
return efl_part(efl_super(obj, MY_CLASS), part); \
}
_ ## type ## _efl_part_part(const Eo *obj, typedata *priv EINA_UNUSED, const char *part) \
{ \
EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); \
- return ELM_PART_OVERRIDE_IMPLEMENT(TYPE ## _PART_CLASS); \
+ return ELM_PART_IMPLEMENT(TYPE ## _PART_CLASS, obj, part); \
}
#define ELM_PART_OVERRIDE_CONTENT_SET_FULL(full, type, TYPE, typedata) \
{ \
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \
typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \
- ELM_PART_RETURN_VAL(_ ## type ## _content_set(pd->obj, sd, pd->part, content)); \
+ return _ ## type ## _content_set(pd->obj, sd, pd->part, content); \
}
#define ELM_PART_OVERRIDE_CONTENT_GET_FULL(full, type, TYPE, typedata) \
{ \
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \
typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \
- ELM_PART_RETURN_VAL(_ ## type ## _content_get(pd->obj, sd, pd->part)); \
+ return _ ## type ## _content_get(pd->obj, sd, pd->part); \
}
#define ELM_PART_OVERRIDE_CONTENT_UNSET_FULL(full, type, TYPE, typedata) \
{ \
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \
typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \
- ELM_PART_RETURN_VAL(_ ## type ## _content_unset(pd->obj, sd, pd->part)); \
+ return _ ## type ## _content_unset(pd->obj, sd, pd->part); \
}
#define ELM_PART_OVERRIDE_TEXT_SET_FULL(full, type, TYPE, typedata) \
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \
typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \
_ ## type ## _text_set(pd->obj, sd, pd->part, text); \
- ELM_PART_RETURN_VOID; \
}
#define ELM_PART_OVERRIDE_TEXT_GET_FULL(full, type, TYPE, typedata) \
{ \
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \
typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \
- ELM_PART_RETURN_VAL(_ ## type ## _text_get(pd->obj, sd, pd->part)); \
+ return _ ## type ## _text_get(pd->obj, sd, pd->part); \
}
#define ELM_PART_OVERRIDE_TEXT_MARKUP_GET_FULL(full, type, TYPE, typedata) \
{ \
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \
typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \
- ELM_PART_RETURN_VAL(_ ## type ## _text_markup_get(pd->obj, sd, pd->part)); \
+ return _ ## type ## _text_markup_get(pd->obj, sd, pd->part); \
}
#define ELM_PART_OVERRIDE_TEXT_MARKUP_SET_FULL(full, type, TYPE, typedata) \
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \
typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \
_ ## type ## _text_markup_set(pd->obj, sd, pd->part, markup); \
- ELM_PART_RETURN_VOID; \
}
#define ELM_PART_OVERRIDE_CONTENT_SET(type, TYPE, typedata) \
EOLIAN static Efl_Object *
_elm_widget_efl_part_part(const Eo *obj, Elm_Widget_Smart_Data *wd EINA_UNUSED, const char *part)
{
- Elm_Part_Data *pd;
- Eo *proxy;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
-
- // Generic parts for every kind of widget
- proxy = efl_add(EFL_UI_WIDGET_PART_CLASS, (Eo *) obj);
- pd = efl_data_scope_get(proxy, EFL_UI_WIDGET_PART_CLASS);
- if (pd)
- {
- pd->obj = (Eo *) obj;
- pd->part = eina_tmpstr_add(part);
- pd->temp = 1;
- }
-
- return proxy;
+ return ELM_PART_IMPLEMENT(EFL_UI_WIDGET_PART_CLASS, obj, part);
}
EOLIAN static void \