forked from enlightenment/efl
edje: Use EO's beta auto_unref API for parts
This simplifies code and avoids unwanted leaks.
This commit is contained in:
parent
df304d0155
commit
79a1fd94ee
|
@ -77,7 +77,7 @@ _edje_internal_proxy_shutdown(void)
|
|||
}
|
||||
|
||||
void
|
||||
_edje_real_part_set(Eo *obj, Edje *ed, Edje_Real_Part *rp, const char *part)
|
||||
_edje_real_part_set(Eo *obj EINA_UNUSED, Edje *ed, Edje_Real_Part *rp, const char *part)
|
||||
{
|
||||
Efl_Canvas_Layout_Part_Data *pd;
|
||||
|
||||
|
@ -86,147 +86,128 @@ _edje_real_part_set(Eo *obj, Edje *ed, Edje_Real_Part *rp, const char *part)
|
|||
pd->ed = ed;
|
||||
pd->rp = rp;
|
||||
pd->part = part;
|
||||
pd->temp = 1;
|
||||
pd->in_use = 1;
|
||||
pd->in_call = 0;
|
||||
efl_parent_set(obj, ed->obj);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Object *
|
||||
_efl_canvas_layout_part_efl_object_finalize(Eo *obj, Efl_Canvas_Layout_Part_Data *pd)
|
||||
_efl_canvas_layout_part_efl_object_finalize(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd)
|
||||
{
|
||||
EINA_SAFETY_ON_FALSE_RETURN_VAL(pd->rp && pd->ed && pd->part, NULL);
|
||||
// Do not use RETURN_VAL() here!
|
||||
// Do not use return here!
|
||||
return efl_finalize(efl_super(obj, MY_CLASS));
|
||||
}
|
||||
|
||||
EOLIAN Eina_Rect
|
||||
_efl_canvas_layout_part_efl_gfx_geometry_get(Eo *obj, Efl_Canvas_Layout_Part_Data *pd)
|
||||
_efl_canvas_layout_part_efl_gfx_geometry_get(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd)
|
||||
{
|
||||
Edje_Real_Part *rp = pd->rp;
|
||||
Eina_Rect r = EINA_RECT_ZERO();
|
||||
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
_edje_recalc_do(pd->ed);
|
||||
if (!rp) RETURN_VAL(r);
|
||||
if (!rp) return r;
|
||||
|
||||
RETURN_VAL((Eina_Rect) rp->rect);
|
||||
return (Eina_Rect) rp->rect;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_canvas_layout_part_state_get(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, const char **name, double *val)
|
||||
_efl_canvas_layout_part_state_get(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, const char **name, double *val)
|
||||
{
|
||||
const char *str;
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
|
||||
if (!name && !val)
|
||||
RETURN_VOID;
|
||||
if (!name && !val) return;
|
||||
str = _edje_object_part_state_get(pd->ed, pd->part, val);
|
||||
if (name) *name = str;
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Layout_Part_Type
|
||||
_efl_canvas_layout_part_part_type_get(Eo *obj, Efl_Canvas_Layout_Part_Data *pd)
|
||||
_efl_canvas_layout_part_part_type_get(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd)
|
||||
{
|
||||
Edje_Real_Part *rp;
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
|
||||
rp = _edje_real_part_recursive_get(&pd->ed, pd->part);
|
||||
if (!rp || !rp->part) RETURN_VAL(EFL_CANVAS_LAYOUT_PART_TYPE_NONE);
|
||||
if (!rp || !rp->part) return EFL_CANVAS_LAYOUT_PART_TYPE_NONE;
|
||||
|
||||
RETURN_VAL((Efl_Canvas_Layout_Part_Type) rp->part->type);
|
||||
return (Efl_Canvas_Layout_Part_Type) rp->part->type;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_value_set(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_value_set(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
|
||||
{
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
RETURN_VAL(_edje_object_part_drag_value_set(pd->ed, pd->part, dx, dy));
|
||||
return _edje_object_part_drag_value_set(pd->ed, pd->part, dx, dy);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_value_get(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, double *dx, double *dy)
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_value_get(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double *dx, double *dy)
|
||||
{
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
RETURN_VAL(_edje_object_part_drag_value_get(pd->ed, pd->part, dx, dy));
|
||||
return _edje_object_part_drag_value_get(pd->ed, pd->part, dx, dy);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_size_set(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, double dw, double dh)
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_size_set(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dw, double dh)
|
||||
{
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
RETURN_VAL(_edje_object_part_drag_size_set(pd->ed, pd->part, dw, dh));
|
||||
return _edje_object_part_drag_size_set(pd->ed, pd->part, dw, dh);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_size_get(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, double *dw, double *dh)
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_size_get(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double *dw, double *dh)
|
||||
{
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
RETURN_VAL(_edje_object_part_drag_size_get(pd->ed, pd->part, dw, dh));
|
||||
return _edje_object_part_drag_size_get(pd->ed, pd->part, dw, dh);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Drag_Dir
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_dir_get(Eo *obj, Efl_Canvas_Layout_Part_Data *pd)
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_dir_get(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd)
|
||||
{
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
RETURN_VAL(_edje_object_part_drag_dir_get(pd->ed, pd->part));
|
||||
return _edje_object_part_drag_dir_get(pd->ed, pd->part);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_step_set(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_step_set(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
|
||||
{
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
RETURN_VAL(_edje_object_part_drag_step_set(pd->ed, pd->part, dx, dy));
|
||||
return _edje_object_part_drag_step_set(pd->ed, pd->part, dx, dy);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_step_get(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, double *dx, double *dy)
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_step_get(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double *dx, double *dy)
|
||||
{
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
RETURN_VAL(_edje_object_part_drag_step_get(pd->ed, pd->part, dx, dy));
|
||||
return _edje_object_part_drag_step_get(pd->ed, pd->part, dx, dy);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_step_move(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_step_move(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
|
||||
{
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
RETURN_VAL(_edje_object_part_drag_step(pd->ed, pd->part, dx, dy));
|
||||
return _edje_object_part_drag_step(pd->ed, pd->part, dx, dy);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_page_set(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_page_set(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
|
||||
{
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
RETURN_VAL(_edje_object_part_drag_page_set(pd->ed, pd->part, dx, dy));
|
||||
return _edje_object_part_drag_page_set(pd->ed, pd->part, dx, dy);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_page_get(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, double *dx, double *dy)
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_page_get(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double *dx, double *dy)
|
||||
{
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
RETURN_VAL(_edje_object_part_drag_page_get(pd->ed, pd->part, dx, dy));
|
||||
return _edje_object_part_drag_page_get(pd->ed, pd->part, dx, dy);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_page_move(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
|
||||
_efl_canvas_layout_part_efl_ui_drag_drag_page_move(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
|
||||
{
|
||||
PROXY_CALL_BEGIN(pd);
|
||||
RETURN_VAL(_edje_object_part_drag_page(pd->ed, pd->part, dx, dy));
|
||||
return _edje_object_part_drag_page(pd->ed, pd->part, dx, dy);
|
||||
}
|
||||
|
||||
static Eo *
|
||||
_edje_invalid_part_efl_content_get(Eo *obj, Efl_Canvas_Layout_Part_Data *pd)
|
||||
_edje_invalid_part_efl_content_get(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd)
|
||||
{
|
||||
ERR("Part '%s' (type: %s) of group '%s' is not a SWALLOW part!", pd->part, _part_type_to_string(pd->rp->type), pd->ed->group);
|
||||
RETURN_VAL(NULL);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_edje_invalid_part_efl_content_set(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, Eo *subobj EINA_UNUSED)
|
||||
_edje_invalid_part_efl_content_set(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, Eo *subobj EINA_UNUSED)
|
||||
{
|
||||
ERR("Part '%s' (type: %s) of group '%s' is not a SWALLOW part!", pd->part, _part_type_to_string(pd->rp->type), pd->ed->group);
|
||||
RETURN_VAL(EINA_FALSE);
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
/* Internal EO APIs and hidden overrides */
|
||||
|
|
|
@ -16,14 +16,14 @@ EOLIAN static Eina_Bool
|
|||
_efl_canvas_layout_part_box_efl_pack_pack_clear(Eo *obj, void *_pd EINA_UNUSED)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_box_remove_all(pd->ed, pd->part, EINA_TRUE));
|
||||
return _edje_part_box_remove_all(pd->ed, pd->part, EINA_TRUE);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_box_efl_pack_unpack_all(Eo *obj, void *_pd EINA_UNUSED)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_box_remove_all(pd->ed, pd->part, EINA_FALSE));
|
||||
return _edje_part_box_remove_all(pd->ed, pd->part, EINA_FALSE);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
|
@ -32,63 +32,63 @@ _efl_canvas_layout_part_box_efl_pack_unpack(Eo *obj, void *_pd EINA_UNUSED, Efl_
|
|||
Evas_Object *removed;
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
removed = _edje_part_box_remove(pd->ed, pd->part, subobj);
|
||||
RETURN_VAL((removed == subobj));
|
||||
return (removed == subobj);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_box_efl_pack_pack(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *subobj)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_box_append(pd->ed, pd->part, subobj));
|
||||
return _edje_part_box_append(pd->ed, pd->part, subobj);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_box_efl_pack_linear_pack_begin(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *subobj)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_box_prepend(pd->ed, pd->part, subobj));
|
||||
return _edje_part_box_prepend(pd->ed, pd->part, subobj);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_box_efl_pack_linear_pack_end(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *subobj)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_box_append(pd->ed, pd->part, subobj));
|
||||
return _edje_part_box_append(pd->ed, pd->part, subobj);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_box_efl_pack_linear_pack_before(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *subobj, const Efl_Gfx *existing)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_box_insert_before(pd->ed, pd->part, subobj, existing));
|
||||
return _edje_part_box_insert_before(pd->ed, pd->part, subobj, existing);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_box_efl_pack_linear_pack_after(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *subobj, const Efl_Gfx *existing)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_box_insert_after(pd->ed, pd->part, subobj, existing));
|
||||
return _edje_part_box_insert_after(pd->ed, pd->part, subobj, existing);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_box_efl_pack_linear_pack_at(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *subobj, int index)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
int cnt = PROXY_CALL(efl_content_count(obj));
|
||||
int cnt = efl_content_count(obj);
|
||||
if ((index < 0) && ((-index) <= (cnt + 1)))
|
||||
index = cnt + index + 1;
|
||||
if ((index >= 0) && (index < cnt))
|
||||
RETURN_VAL(_edje_part_box_insert_at(pd->ed, pd->part, subobj, index));
|
||||
return _edje_part_box_insert_at(pd->ed, pd->part, subobj, index);
|
||||
else
|
||||
RETURN_VAL(_edje_part_box_append(pd->ed, pd->part, subobj));
|
||||
return _edje_part_box_append(pd->ed, pd->part, subobj);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Gfx *
|
||||
_efl_canvas_layout_part_box_efl_pack_linear_pack_unpack_at(Eo *obj, void *_pd EINA_UNUSED, int index)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
if (index < 0) index += PROXY_CALL(efl_content_count(obj));
|
||||
RETURN_VAL(_edje_part_box_remove_at(pd->ed, pd->part, index));
|
||||
if (index < 0) index += efl_content_count(obj);
|
||||
return _edje_part_box_remove_at(pd->ed, pd->part, index);
|
||||
}
|
||||
|
||||
/* New APIs with Eo */
|
||||
|
@ -97,15 +97,14 @@ EOLIAN static Efl_Gfx *
|
|||
_efl_canvas_layout_part_box_efl_pack_linear_pack_content_get(Eo *obj, void *_pd EINA_UNUSED, int index)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
if (index < 0) index += PROXY_CALL(efl_content_count(obj));
|
||||
RETURN_VAL(_edje_part_box_content_at(pd->ed, pd->part, index));
|
||||
if (index < 0) index += efl_content_count(obj);
|
||||
return _edje_part_box_content_at(pd->ed, pd->part, index);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_box_efl_container_content_remove(Eo *obj, void *_pd EINA_UNUSED EINA_UNUSED, Efl_Gfx *subobj)
|
||||
_efl_canvas_layout_part_box_efl_container_content_remove(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *subobj)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(PROXY_CALL(efl_pack_unpack(obj, subobj)));
|
||||
return efl_pack_unpack(obj, subobj);
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
|
@ -118,14 +117,14 @@ _efl_canvas_layout_part_box_efl_pack_linear_pack_index_get(Eo *obj, void *_pd EI
|
|||
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
priv = efl_data_scope_get(pd->rp->object, EVAS_BOX_CLASS);
|
||||
if (!priv) RETURN_VAL(-1);
|
||||
if (!priv) return -1;
|
||||
EINA_LIST_FOREACH(priv->children, l, opt)
|
||||
{
|
||||
if (opt->obj == subobj)
|
||||
RETURN_VAL(k);
|
||||
return k;
|
||||
k++;
|
||||
}
|
||||
RETURN_VAL(-1);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* this iterator is the same as efl_ui_box */
|
||||
|
@ -182,17 +181,17 @@ _efl_canvas_layout_part_box_efl_container_content_iterate(Eo *obj, void *_pd EIN
|
|||
Eina_Iterator *it;
|
||||
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
if (!pd->rp->typedata.container) RETURN_VAL(NULL);
|
||||
if (!pd->rp->typedata.container) return NULL;
|
||||
it = evas_object_box_iterator_new(pd->rp->object);
|
||||
|
||||
RETURN_VAL(_part_item_iterator_create(pd->rp->object, it));
|
||||
return _part_item_iterator_create(pd->rp->object, it);
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
_efl_canvas_layout_part_box_efl_container_content_count(Eo *obj, void *_pd EINA_UNUSED)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(evas_obj_box_count(pd->rp->object));
|
||||
return evas_obj_box_count(pd->rp->object);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Dir
|
||||
|
@ -203,15 +202,15 @@ _efl_canvas_layout_part_box_efl_ui_direction_direction_get(Eo *obj, void *_pd EI
|
|||
(Edje_Part_Description_Box *) pd->rp->chosen_description;
|
||||
|
||||
if (!desc || !desc->box.layout)
|
||||
RETURN_VAL(EFL_UI_DIR_DEFAULT);
|
||||
return EFL_UI_DIR_DEFAULT;
|
||||
|
||||
if (!strncmp(desc->box.layout, "vertical", 8))
|
||||
RETURN_VAL(EFL_UI_DIR_VERTICAL);
|
||||
return EFL_UI_DIR_VERTICAL;
|
||||
else if (!strncmp(desc->box.layout, "horizontal", 10))
|
||||
RETURN_VAL(EFL_UI_DIR_HORIZONTAL);
|
||||
return EFL_UI_DIR_HORIZONTAL;
|
||||
|
||||
WRN("unknown orientation '%s'", desc->box.layout);
|
||||
RETURN_VAL(EFL_UI_DIR_DEFAULT);
|
||||
return EFL_UI_DIR_DEFAULT;
|
||||
}
|
||||
|
||||
#include "efl_canvas_layout_part_box.eo.c"
|
||||
|
|
|
@ -19,7 +19,7 @@ EOLIAN static Efl_Gfx *
|
|||
_efl_canvas_layout_part_external_efl_container_content_get(Eo *obj, void *_pd EINA_UNUSED)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_object_part_external_object_get(pd->ed, pd->part));
|
||||
return _edje_object_part_external_object_get(pd->ed, pd->part);
|
||||
}
|
||||
|
||||
#include "efl_canvas_layout_part_external.eo.c"
|
||||
|
|
|
@ -9,7 +9,6 @@ struct _Efl_Canvas_Layout_Part_Data
|
|||
Edje_Real_Part *rp;
|
||||
const char *part;
|
||||
Eo *obj;
|
||||
unsigned char temp, in_call, in_use;
|
||||
};
|
||||
|
||||
struct _Part_Item_Iterator
|
||||
|
@ -23,13 +22,6 @@ struct _Part_Item_Iterator
|
|||
void _part_reuse_error(Efl_Canvas_Layout_Part_Data *pd);
|
||||
const char * _part_type_to_string(unsigned char type);
|
||||
|
||||
#define PROXY_CALL_BEGIN(pd) do { pd->in_call = 1; } while (0)
|
||||
#define PROXY_CALL_END(pd) do { pd->in_call = 0; } while (0)
|
||||
#define PROXY_REF(obj, pd) do { if (!(pd->temp++)) efl_ref(obj); } while(0)
|
||||
#define PROXY_UNREF(obj, pd) do { if (pd->temp) { if (!(--pd->temp)) efl_del(obj); } } while(0)
|
||||
#define RETURN_VAL(a) do { typeof(a) _ret = a; PROXY_CALL_END(pd); PROXY_UNREF(obj, pd); return _ret; } while(0)
|
||||
#define RETURN_VOID do { PROXY_CALL_END(pd); PROXY_UNREF(obj, pd); return; } while(0)
|
||||
#define PROXY_CALL(a) ({ PROXY_REF(obj, pd); a; })
|
||||
#define PROXY_STATIC_VAR(type) _##type##_proxy
|
||||
|
||||
#ifndef PROXY_ADD_EXTRA_OP
|
||||
|
@ -41,13 +33,8 @@ void _edje_real_part_set(Eo *obj, Edje *ed, Edje_Real_Part *rp, const char *part
|
|||
static inline void
|
||||
_part_proxy_del_cb(Eo *proxy, Eo **static_var)
|
||||
{
|
||||
Efl_Canvas_Layout_Part_Data *pd;
|
||||
if (*static_var)
|
||||
{
|
||||
// FIXME: Enable debug checks only in debug mode
|
||||
pd = efl_data_scope_get(*static_var, EFL_CANVAS_LAYOUT_PART_CLASS);
|
||||
if (pd && pd->temp && !pd->in_call)
|
||||
_part_reuse_error(pd);
|
||||
if (*static_var != proxy)
|
||||
efl_del_intercept_set(*static_var, NULL);
|
||||
}
|
||||
|
@ -57,8 +44,6 @@ _part_proxy_del_cb(Eo *proxy, Eo **static_var)
|
|||
efl_parent_set(proxy, NULL);
|
||||
}
|
||||
efl_reuse(proxy);
|
||||
pd = efl_data_scope_get(proxy, EFL_CANVAS_LAYOUT_PART_CLASS);
|
||||
pd->in_use = EINA_FALSE;
|
||||
*static_var = proxy;
|
||||
}
|
||||
|
||||
|
@ -77,8 +62,7 @@ void \
|
|||
_ ## type ## _shutdown(void); \
|
||||
|
||||
#define PROXY_DATA_GET(obj, pd) \
|
||||
Efl_Canvas_Layout_Part_Data *pd = efl_data_scope_get(obj, EFL_CANVAS_LAYOUT_PART_CLASS); \
|
||||
PROXY_CALL_BEGIN(pd)
|
||||
Efl_Canvas_Layout_Part_Data *pd = efl_data_scope_get(obj, EFL_CANVAS_LAYOUT_PART_CLASS);
|
||||
|
||||
#define PROXY_IMPLEMENTATION(type, KLASS, no_del_cb, ...) \
|
||||
static Eo * PROXY_STATIC_VAR(type) = NULL; \
|
||||
|
@ -109,25 +93,15 @@ _edje_ ## type ## _internal_proxy_get(Edje_Object *obj EINA_UNUSED, Edje *ed, Ed
|
|||
proxy = efl_add(KLASS, ed->obj, _edje_real_part_set(efl_added, ed, rp, rp->part->name)); \
|
||||
goto end ; \
|
||||
} \
|
||||
else PROXY_STATIC_VAR(type) = NULL; \
|
||||
\
|
||||
if (EINA_UNLIKELY(pd->in_use)) \
|
||||
{ \
|
||||
/* if (!pd->in_call) _part_reuse_error(pd); */ \
|
||||
proxy = efl_add(KLASS, ed->obj, _edje_real_part_set(efl_added, ed, rp, rp->part->name)); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
_edje_real_part_set(proxy, ed, rp, rp->part->name); \
|
||||
} \
|
||||
_edje_real_part_set(proxy, ed, rp, rp->part->name); \
|
||||
\
|
||||
end: \
|
||||
\
|
||||
__VA_ARGS__; \
|
||||
if (!no_del_cb) \
|
||||
{ \
|
||||
PROXY_STATIC_VAR(type) = proxy; \
|
||||
efl_del_intercept_set(proxy, _ ## type ## _del_cb); \
|
||||
} \
|
||||
if (!no_del_cb) efl_del_intercept_set(proxy, _ ## type ## _del_cb); \
|
||||
efl_allow_parent_unref_set(proxy, 1); \
|
||||
efl_auto_unref_set(proxy, 1); \
|
||||
return proxy; \
|
||||
}
|
||||
|
||||
|
|
|
@ -11,14 +11,14 @@ EOLIAN static Efl_Gfx *
|
|||
_efl_canvas_layout_part_swallow_efl_container_content_get(Eo *obj, void *_pd EINA_UNUSED)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_efl_container_content_get(pd->ed, pd->part));
|
||||
return _edje_efl_container_content_get(pd->ed, pd->part);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_swallow_efl_container_content_set(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *content)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_efl_container_content_set(pd->ed, pd->part, content));
|
||||
return _edje_efl_container_content_set(pd->ed, pd->part, content);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Gfx *
|
||||
|
@ -26,9 +26,9 @@ _efl_canvas_layout_part_swallow_efl_container_content_unset(Eo *obj, void *_pd E
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
Efl_Gfx *content = _edje_efl_container_content_get(pd->ed, pd->part);
|
||||
if (!content) RETURN_VAL(NULL);
|
||||
PROXY_CALL(efl_content_remove(obj, content));
|
||||
RETURN_VAL(content);
|
||||
if (!content) return NULL;
|
||||
efl_content_remove(obj, content);
|
||||
return content;
|
||||
}
|
||||
|
||||
#include "efl_canvas_layout_part_swallow.eo.c"
|
||||
|
|
|
@ -64,59 +64,58 @@ _efl_canvas_layout_part_table_efl_container_content_iterate(Eo *obj, void *_pd E
|
|||
Eina_Iterator *it;
|
||||
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
if (!pd->rp->typedata.container) RETURN_VAL(NULL);
|
||||
if (!pd->rp->typedata.container) return NULL;
|
||||
it = evas_object_table_iterator_new(pd->rp->object);
|
||||
|
||||
RETURN_VAL(_part_item_iterator_create(pd->rp->object, it));
|
||||
return _part_item_iterator_create(pd->rp->object, it);
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
_efl_canvas_layout_part_table_efl_container_content_count(Eo *obj, void *_pd EINA_UNUSED)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(evas_obj_table_count(pd->rp->object));
|
||||
return evas_obj_table_count(pd->rp->object);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_table_efl_container_content_remove(Eo *obj, void *_pd EINA_UNUSED EINA_UNUSED, Efl_Gfx *content)
|
||||
_efl_canvas_layout_part_table_efl_container_content_remove(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED EINA_UNUSED, Efl_Gfx *content)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(PROXY_CALL(efl_pack_unpack(obj, content)));
|
||||
return efl_pack_unpack(obj, content);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_table_efl_pack_pack_clear(Eo *obj, void *_pd EINA_UNUSED)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_table_clear(pd->ed, pd->part, EINA_TRUE));
|
||||
return _edje_part_table_clear(pd->ed, pd->part, EINA_TRUE);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_table_efl_pack_unpack_all(Eo *obj, void *_pd EINA_UNUSED)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_table_clear(pd->ed, pd->part, EINA_FALSE));
|
||||
return _edje_part_table_clear(pd->ed, pd->part, EINA_FALSE);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_table_efl_pack_unpack(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, Efl_Gfx *subobj)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_table_unpack(pd->ed, pd->part, subobj));
|
||||
return _edje_part_table_unpack(pd->ed, pd->part, subobj);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_layout_part_table_efl_pack_grid_pack_grid(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx *subobj, int col, int row, int colspan, int rowspan)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_table_pack(pd->ed, pd->part, subobj, col, row, colspan, rowspan));
|
||||
return _edje_part_table_pack(pd->ed, pd->part, subobj, col, row, colspan, rowspan);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Gfx *
|
||||
_efl_canvas_layout_part_table_efl_pack_grid_grid_content_get(Eo *obj, void *_pd EINA_UNUSED, int col, int row)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_part_table_child_get(pd->ed, pd->part, col, row));
|
||||
return _edje_part_table_child_get(pd->ed, pd->part, col, row);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -124,7 +123,6 @@ _efl_canvas_layout_part_table_efl_pack_grid_grid_size_get(Eo *obj, void *_pd EIN
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_part_table_col_row_size_get(pd->ed, pd->part, cols, rows);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
|
@ -133,7 +131,7 @@ _efl_canvas_layout_part_table_efl_pack_grid_grid_columns_get(Eo *obj, void *_pd
|
|||
PROXY_DATA_GET(obj, pd);
|
||||
int cols = 0, rows = 0;
|
||||
_edje_part_table_col_row_size_get(pd->ed, pd->part, &cols, &rows);
|
||||
RETURN_VAL(cols);
|
||||
return cols;
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
|
@ -142,7 +140,7 @@ _efl_canvas_layout_part_table_efl_pack_grid_grid_rows_get(Eo *obj, void *_pd EIN
|
|||
PROXY_DATA_GET(obj, pd);
|
||||
int cols = 0, rows = 0;
|
||||
_edje_part_table_col_row_size_get(pd->ed, pd->part, &cols, &rows);
|
||||
RETURN_VAL(rows);
|
||||
return rows;
|
||||
}
|
||||
|
||||
/* New table apis with eo */
|
||||
|
@ -203,7 +201,7 @@ _efl_canvas_layout_part_table_efl_pack_grid_grid_contents_get(Eo *obj, void *_pd
|
|||
eina_iterator_free(it);
|
||||
|
||||
pit = calloc(1, sizeof(*pit));
|
||||
if (!pit) RETURN_VAL(NULL);
|
||||
if (!pit) return NULL;
|
||||
|
||||
EINA_MAGIC_SET(&pit->iterator, EINA_MAGIC_ITERATOR);
|
||||
|
||||
|
@ -215,7 +213,7 @@ _efl_canvas_layout_part_table_efl_pack_grid_grid_contents_get(Eo *obj, void *_pd
|
|||
pit->iterator.free = FUNC_ITERATOR_FREE(_table_item_iterator_free);
|
||||
efl_wref_add(obj, &pit->object);
|
||||
|
||||
RETURN_VAL(&pit->iterator);
|
||||
return &pit->iterator;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
|
@ -231,7 +229,7 @@ _efl_canvas_layout_part_table_efl_pack_grid_grid_position_get(Eo *obj, void *_pd
|
|||
if (colspan) *colspan = cs;
|
||||
if (rowspan) *rowspan = rs;
|
||||
|
||||
RETURN_VAL(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Legacy API implementation */
|
||||
|
|
|
@ -12,7 +12,6 @@ _efl_canvas_layout_part_text_efl_text_text_set(Eo *obj,
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_efl_text_set(obj, pd->ed, pd->part, text, EINA_FALSE, EINA_FALSE);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static const char *
|
||||
|
@ -20,7 +19,7 @@ _efl_canvas_layout_part_text_efl_text_text_get(Eo *obj,
|
|||
void *_pd EINA_UNUSED)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_efl_text_get(obj, pd->ed, pd->part, EINA_FALSE, EINA_FALSE));
|
||||
return _edje_efl_text_get(obj, pd->ed, pd->part, EINA_FALSE, EINA_FALSE);
|
||||
}
|
||||
|
||||
EOLIAN static const char *
|
||||
|
@ -28,7 +27,7 @@ _efl_canvas_layout_part_text_efl_text_markup_markup_get(Eo *obj,
|
|||
void *_pd EINA_UNUSED)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_efl_text_get(obj, pd->ed, pd->part, EINA_FALSE, EINA_TRUE));
|
||||
return _edje_efl_text_get(obj, pd->ed, pd->part, EINA_FALSE, EINA_TRUE);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -37,7 +36,6 @@ _efl_canvas_layout_part_text_efl_text_markup_markup_set(Eo *obj,
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_efl_text_set(obj, pd->ed, pd->part, text, EINA_FALSE, EINA_TRUE);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
|
||||
|
@ -46,7 +44,7 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_get(Eo *obj,
|
|||
void *_pd EINA_UNUSED, Efl_Text_Cursor_Cursor_Get_Type get_type)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_text_cursor_get(pd->rp, (int) get_type));
|
||||
return _edje_text_cursor_get(pd->rp, (int) get_type);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -55,7 +53,6 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_paragraph_first(Eo *obj,
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_text_cursor_begin(pd->rp, cur);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -64,7 +61,6 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_paragraph_last(Eo *obj,
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_text_cursor_end(pd->rp, cur);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -73,7 +69,6 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_position_set(Eo *obj,
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_text_cursor_pos_set(pd->rp, cur, pos);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
|
@ -81,7 +76,7 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_position_get(Eo *obj,
|
|||
void *_pd EINA_UNUSED, Efl_Text_Cursor_Cursor *cur)
|
||||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
RETURN_VAL(_edje_text_cursor_pos_get(pd->rp, cur));
|
||||
return _edje_text_cursor_pos_get(pd->rp, cur);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -91,7 +86,6 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_coord_set(Eo *obj,
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_text_cursor_coord_set(pd->rp, cur, x, y);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -100,7 +94,6 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_line_char_first(Eo *obj,
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_text_cursor_line_begin(pd->rp, cur);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -109,7 +102,6 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_line_char_last(Eo *obj,
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_text_cursor_line_end(pd->rp, cur);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -118,7 +110,6 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_char_prev(Eo *obj,
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_text_cursor_prev(pd->rp, cur);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -127,7 +118,6 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_char_next(Eo *obj,
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_text_cursor_next(pd->rp, cur);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -143,7 +133,6 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_line_jump_by(Eo *obj,
|
|||
{
|
||||
_edje_text_cursor_up(pd->rp, cur);
|
||||
}
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -154,7 +143,6 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_copy(Eo *obj,
|
|||
{
|
||||
PROXY_DATA_GET(obj, pd);
|
||||
_edje_text_cursor_copy(pd->rp, (Efl_Text_Cursor_Cursor *) cur, dst);
|
||||
RETURN_VOID;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Unicode
|
||||
|
@ -176,7 +164,7 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_content_get(Eo *obj,
|
|||
uc = *ustr;
|
||||
free(ustr);
|
||||
}
|
||||
RETURN_VAL(uc);
|
||||
return uc;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
|
@ -195,7 +183,7 @@ _efl_canvas_layout_part_text_efl_text_cursor_cursor_geometry_get(Eo *obj,
|
|||
if (cx) *cx -= pd->ed->x;
|
||||
if (cy) *cy -= pd->ed->y;
|
||||
}
|
||||
RETURN_VAL(EINA_FALSE);
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
|
|
@ -39,6 +39,9 @@
|
|||
# include <Evil.h>
|
||||
#endif
|
||||
|
||||
// auto_unref
|
||||
#define EFL_OBJECT_BETA
|
||||
#define EFL_OBJECT_PROTECTED
|
||||
#define EDJE_OBJECT_BETA
|
||||
#define EFL_CANVAS_OBJECT_PROTECTED
|
||||
#define EFL_CANVAS_LAYOUT_CALC_PROTECTED
|
||||
|
|
Loading…
Reference in New Issue