efl_vg: use efl.object's name property instead of implementing a new one

This commit is contained in:
Mike Blumenkrantz 2018-02-12 15:04:15 -05:00
parent 884fc35160
commit a03bcd34af
4 changed files with 17 additions and 46 deletions

View File

@ -6,28 +6,6 @@ abstract Efl.VG (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, Efl.Duplicat
eo_prefix: efl_vg;
legacy_prefix: evas_vg_node;
methods {
@property name {
set {
[[Set an unique name from the parent's point of view. $null means
no name.
@since 1.16
]]
}
get {
[[Get an unique name from the parent's point of view.
$null means no name. When setting a parent after a name has
already been defined, it might be forced back to $null if the parent
already has a node of that name.
@since 1.16
]]
}
values {
name: string; [[Node name]]
}
}
@property transformation {
set {
[[Sets the transformation matrix to be used for this node object.
@ -105,6 +83,7 @@ abstract Efl.VG (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, Efl.Duplicat
}
}
implements {
Efl.Object.name { set; }
Efl.Object.parent { set; }
Efl.Object.constructor;
Efl.Object.destructor;

View File

@ -283,46 +283,41 @@ _efl_vg_efl_object_destructor(Eo *obj, Efl_VG_Data *pd)
}
static void
_efl_vg_name_insert(Eo *obj, Efl_VG_Data *pd, Efl_VG_Container_Data *cd)
_efl_vg_name_insert(Eo *obj, Efl_VG_Container_Data *cd)
{
Eo *set;
const char *name = efl_name_get(efl_super(obj, MY_CLASS));
if (!pd->name) return ;
if (!name) return ;
set = eina_hash_find(cd->names, pd->name);
set = eina_hash_find(cd->names, name);
if (set == obj) return ;
if (set)
{
eina_stringshare_del(pd->name);
pd->name = NULL;
efl_name_set(efl_super(obj, MY_CLASS), NULL);
}
else
{
eina_hash_direct_add(cd->names, pd->name, obj);
eina_hash_direct_add(cd->names, name, obj);
}
}
static void
_efl_vg_name_set(Eo *obj, Efl_VG_Data *pd, const char *name)
_efl_vg_efl_object_name_set(Eo *obj, Efl_VG_Data *pd EINA_UNUSED, const char *name)
{
Efl_VG_Container_Data *cd = NULL;
Eo *parent = NULL;
const char *pname = efl_name_get(obj);
if (_efl_vg_parent_checked_get(obj, &parent, &cd))
{
if (pd->name) eina_hash_del(cd->names, pd->name, obj);
if (pname) eina_hash_del(cd->names, pname, obj);
}
eina_stringshare_replace(&pd->name, name);
efl_name_set(efl_super(obj, MY_CLASS), name);
if (cd) _efl_vg_name_insert(obj, pd, cd);
}
static const char *
_efl_vg_name_get(Eo *obj EINA_UNUSED, Efl_VG_Data *pd)
{
return pd->name;
if (cd) _efl_vg_name_insert(obj, cd);
}
static void
@ -360,7 +355,7 @@ _efl_vg_efl_object_parent_set(Eo *obj,
{
old_cd->children = eina_list_remove(old_cd->children, obj);
if (pd->name) eina_hash_del(old_cd->names, pd->name, obj);
eina_hash_del(old_cd->names, efl_name_get(efl_super(obj, MY_CLASS)), obj);
}
efl_parent_set(efl_super(obj, MY_CLASS), parent);
@ -368,7 +363,7 @@ _efl_vg_efl_object_parent_set(Eo *obj,
{
cd->children = eina_list_append(cd->children, obj);
_efl_vg_name_insert(obj, pd, cd);
_efl_vg_name_insert(obj, cd);
}
_efl_vg_changed(old_parent);
@ -724,8 +719,7 @@ _efl_vg_efl_duplicate_duplicate(const Eo *obj, Efl_VG_Data *pd)
cn = efl_add(efl_class_get(obj), NULL);
cd = efl_data_scope_get(cn, MY_CLASS);
EINA_SAFETY_ON_NULL_RETURN_VAL(cd, NULL);
if (pd->name)
cd->name = eina_stringshare_ref(pd->name);
efl_name_set(efl_super(cn, MY_CLASS), efl_name_get(efl_super(obj, MY_CLASS)));
if (pd->m)
{
cd->m = malloc(sizeof (Eina_Matrix3)) ;

View File

@ -56,8 +56,6 @@ struct _Efl_Canvas_Vg_Data
struct _Efl_VG_Data
{
const char *name;
Eina_Matrix3 *m;
Efl_VG_Interpolation *intp;

View File

@ -669,7 +669,7 @@ _apply_vg_property(Svg_Node *node, Efl_VG *vg, Vg_File_Data *vg_data)
// update the vg name
if (node->id)
evas_vg_node_name_set(vg, node->id);
efl_name_set(vg, node->id);
// apply the transformation
if (node->transform)
@ -927,7 +927,7 @@ _apply_svg_property(Svg_Node *node, Efl_VG *vg)
eina_matrix3_copy(node->transform, matrix);
}
if ((id = evas_vg_node_name_get(vg)))
if ((id = efl_name_get(vg)))
{
node->id = eina_stringshare_add(id);
}