edje_edit: proper work with part id's on part restack and del for map fields

@fix
This commit is contained in:
Vitalii Vorobiov 2016-10-11 14:54:24 +03:00
parent 846c14a392
commit 9450c1ec7b
1 changed files with 34 additions and 1 deletions

View File

@ -700,6 +700,22 @@ _edje_part_description_id_switch(int type, Edje_Part_Description_Common *c, int
else if (t->text.id_text_source == id2)
t->text.id_text_source = id1;
}
if (c->map.id_persp == id1)
c->map.id_persp = id2;
else if (c->map.id_persp == id2)
c->map.id_persp = id1;
if (c->map.id_light == id1)
c->map.id_light = id2;
else if (c->map.id_light == id2)
c->map.id_light = id1;
if (c->map.rot.id_center == id1)
c->map.rot.id_center = id2;
else if (c->map.rot.id_center == id2)
c->map.rot.id_center = id1;
}
static void
@ -3291,7 +3307,7 @@ edje_edit_part_del(Evas_Object *obj, const char *part)
Edje_Part *ep;
unsigned int k;
unsigned int id;
unsigned short i;
unsigned short i, j;
GET_EED_OR_RETURN(EINA_FALSE);
GET_RP_OR_RETURN(EINA_FALSE);
@ -3332,6 +3348,23 @@ edje_edit_part_del(Evas_Object *obj, const char *part)
else if (i > id)
real->part->dragable.event_id--;
}
if (real->part->default_desc->map.id_persp == rp->part->id)
real->part->default_desc->map.id_persp = -1;
if (real->part->default_desc->map.id_light == rp->part->id)
real->part->default_desc->map.id_light = -1;
if (real->part->default_desc->map.rot.id_center == rp->part->id)
real->part->default_desc->map.rot.id_center = -1;
for (j = 0; j < real->part->other.desc_count; ++j)
{
if (real->part->other.desc[i]->map.id_persp == rp->part->id)
real->part->other.desc[i]->map.id_persp = -1;
if (real->part->other.desc[i]->map.id_light == rp->part->id)
real->part->other.desc[i]->map.id_light = -1;
if (real->part->other.desc[i]->map.rot.id_center == rp->part->id)
real->part->other.desc[i]->map.rot.id_center = -1;
}
}
/* Unlink all the parts and descriptions that refer to id */