From e4b874d3c4f36129467ea4dc73669ed377284fba Mon Sep 17 00:00:00 2001 From: Hugo Camboulive Date: Tue, 27 Jul 2010 10:08:40 +0000 Subject: [PATCH] From: Hugo Camboulive Subject: [E-devel] [E-Devel] [Patch] Edje Message - add the callback recursively When you send a message from an edje subgroup (part { type: GROUP ...}), the message callback isn't called because it tries to reach ed->message.func, which is only defined for the top edje part. This patches adds the callback and data to all the subgroups recursively. SVN revision: 50538 --- legacy/edje/src/lib/edje_message_queue.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/legacy/edje/src/lib/edje_message_queue.c b/legacy/edje/src/lib/edje_message_queue.c index c7f22ba86d..e7aec81c91 100644 --- a/legacy/edje/src/lib/edje_message_queue.c +++ b/legacy/edje/src/lib/edje_message_queue.c @@ -211,8 +211,19 @@ _edje_message_shutdown(void) void _edje_message_cb_set(Edje *ed, void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg), void *data) { + int i; + ed->message.func = func; ed->message.data = data; + for (i = 0 ; i < ed->table_parts_size ; i++) { + Edje_Real_Part *rp; + rp = ed->table_parts[i]; + if (rp->part->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object) { + Edje *edj2 = _edje_fetch(rp->swallowed_object); + if (!edj2) continue; + _edje_message_cb_set(edj2, func, data); + } + } } Edje_Message *