From 7d9d42a281b88356f87aa8c0f57ff22ee0409974 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 24 Mar 2014 15:26:49 -0400 Subject: [PATCH] edje_cc correctly copies group.limits when inheriting, FIXME-- --- src/bin/edje/edje_cc_handlers.c | 58 ++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 39f2605814..26f4322f2d 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -2860,7 +2860,63 @@ st_collections_group_inherit(void) pcp2 = (Edje_Part_Collection_Parser *)pc2; pcp->default_mouse_events = pcp2->default_mouse_events; - // FIXME: Handle limits dup + { + Edje_Limit **elp; + + elp = realloc(pc->limits.vertical, + pc->limits.vertical_count + pc2->limits.vertical_count * sizeof(Edje_Limit *)); + if (!elp) + { + ERR("Not enough memory."); + exit(-1); + } + pc->limits.vertical = elp; + offset = pc->limits.vertical_count; + for (i = 0; i < pc2->limits.vertical_count; i++) + { + Edje_Limit *el; + + el = mem_alloc(SZ(Edje_Limit)); + if (!el) + { + ERR("Not enough memory."); + exit(-1); + } + + pc->limits.vertical[i + offset] = el; + + el->name = STRDUP(pc2->limits.vertical[i]->name); + el->value = pc2->limits.vertical[i]->value; + pc->limits.vertical_count++; + } + + elp = realloc(pc->limits.horizontal, + pc->limits.horizontal_count + pc2->limits.horizontal_count * sizeof(Edje_Limit *)); + if (!elp) + { + ERR("Not enough memory."); + exit(-1); + } + pc->limits.horizontal = elp; + offset = pc->limits.horizontal_count; + for (i = 0; i < pc2->limits.horizontal_count; i++) + { + Edje_Limit *el; + + el = mem_alloc(SZ(Edje_Limit)); + if (!el) + { + ERR("Not enough memory."); + exit(-1); + } + + pc->limits.horizontal[i + offset] = el; + + el->name = STRDUP(pc2->limits.horizontal[i]->name); + el->value = pc2->limits.horizontal[i]->value; + pc->limits.horizontal_count++; + } + } offset = pc->parts_count; for (i = 0 ; i < pc2->parts_count ; i++)