On Fri, 18 Nov 2011 11:38:57 +0100 (CET) Vincent Torri <[email protected]> said:
> > > On Fri, 18 Nov 2011, Enlightenment SVN wrote: > > > Log: > > fix inconsistency with propagating signals and messages. now messages > > AND signals should propagate to children the SAME WAY - that means > > children you added explicitly in the edje file and not form c code get > > propagated to. > > does ChangeLog/NEWS need an entry ? waiting for onefang to try.:) i may have to revert and try again. > > Author: raster > > Date: 2011-11-18 02:35:38 -0800 (Fri, 18 Nov 2011) > > New Revision: 65384 > > Trac: http://trac.enlightenment.org/e/changeset/65384 > > > > Modified: > > trunk/edje/src/lib/edje_embryo.c trunk/edje/src/lib/edje_entry.c > > trunk/edje/src/lib/edje_load.c trunk/edje/src/lib/edje_lua2.c > > trunk/edje/src/lib/edje_message_queue.c trunk/edje/src/lib/edje_private.h > > trunk/edje/src/lib/edje_program.c trunk/edje/src/lib/edje_util.c > > > > Modified: trunk/edje/src/lib/edje_embryo.c > > =================================================================== > > --- trunk/edje/src/lib/edje_embryo.c 2011-11-18 09:52:58 UTC (rev > > 65383) +++ trunk/edje/src/lib/edje_embryo.c 2011-11-18 10:35:38 UTC > > (rev 65384) @@ -2609,6 +2609,7 @@ > > return 0; > > } > > edje_object_part_swallow(ed->obj, rp->part->name, new_obj); > > + _edje_subobj_register(ed, new_obj); > > > > return 0; > > } > > > > Modified: trunk/edje/src/lib/edje_entry.c > > =================================================================== > > --- trunk/edje/src/lib/edje_entry.c 2011-11-18 09:52:58 UTC (rev > > 65383) +++ trunk/edje/src/lib/edje_entry.c 2011-11-18 10:35:38 UTC > > (rev 65384) @@ -464,8 +464,6 @@ > > Sel *sel; > > > > sel = en->sel->data; > > - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, > > sel->obj_bg); > > - en->rp->edje->subobjs = eina_list_remove(en->rp->edje->subobjs, > > sel->obj_fg); if (sel->obj_bg) evas_object_del(sel->obj_bg); > > if (sel->obj_fg) evas_object_del(sel->obj_fg); > > free(sel); > > @@ -497,8 +495,6 @@ > > while (en->sel) > > { > > sel = en->sel->data; > > - en->rp->edje->subobjs = eina_list_remove > > (en->rp->edje->subobjs, sel->obj_bg); > > - en->rp->edje->subobjs = eina_list_remove > > (en->rp->edje->subobjs, sel->obj_fg); if (sel->obj_bg) evas_object_del > > (sel->obj_bg); if (sel->obj_fg) evas_object_del(sel->obj_fg); > > free(sel); > > @@ -520,7 +516,7 @@ > > evas_object_pass_events_set(ob, EINA_TRUE); > > evas_object_show(ob); > > sel->obj_bg = ob; > > - en->rp->edje->subobjs = eina_list_append > > (en->rp->edje->subobjs, sel->obj_bg); > > + _edje_subobj_register(en->rp->edje, sel->obj_bg); > > > > ob = edje_object_add(en->rp->edje->base.evas); > > edje_object_file_set(ob, en->rp->edje->path, > > en->rp->part->source2); @@ -530,7 +526,7 @@ > > evas_object_pass_events_set(ob, EINA_TRUE); > > evas_object_show(ob); > > sel->obj_fg = ob; > > - en->rp->edje->subobjs = eina_list_append > > (en->rp->edje->subobjs, sel->obj_fg); > > + _edje_subobj_register(en->rp->edje, sel->obj_fg); > > } > > } > > } > > @@ -728,10 +724,6 @@ > > while (an->sel) > > { > > sel = an->sel->data; > > - en->rp->edje->subobjs = > > - eina_list_remove(en->rp->edje->subobjs, > > sel->obj_bg); > > - en->rp->edje->subobjs = > > - eina_list_remove(en->rp->edje->subobjs, > > sel->obj_fg); if (sel->obj_bg) evas_object_del(sel->obj_bg); > > if (sel->obj_fg) evas_object_del(sel->obj_fg); > > if (sel->obj) evas_object_del(sel->obj); > > @@ -766,8 +758,6 @@ > > while (an->sel) > > { > > sel = an->sel->data; > > - en->rp->edje->subobjs = eina_list_remove > > (en->rp->edje->subobjs, sel->obj_bg); > > - en->rp->edje->subobjs = eina_list_remove > > (en->rp->edje->subobjs, sel->obj_fg); if (sel->obj_bg) evas_object_del > > (sel->obj_bg); if (sel->obj_fg) evas_object_del(sel->obj_fg); > > if (sel->obj) evas_object_del(sel->obj); > > @@ -788,7 +778,7 @@ > > evas_object_pass_events_set(ob, EINA_TRUE); > > evas_object_show(ob); > > sel->obj_bg = ob; > > - en->rp->edje->subobjs = eina_list_append > > (en->rp->edje->subobjs, sel->obj_bg); > > + _edje_subobj_register(en->rp->edje, sel->obj_bg); > > > > ob = edje_object_add(en->rp->edje->base.evas); > > edje_object_file_set(ob, en->rp->edje->path, > > en->rp->part->source6); @@ -798,7 +788,7 @@ > > evas_object_pass_events_set(ob, EINA_TRUE); > > evas_object_show(ob); > > sel->obj_fg = ob; > > - en->rp->edje->subobjs = eina_list_append > > (en->rp->edje->subobjs, sel->obj_fg); > > + _edje_subobj_register(en->rp->edje, sel->obj_fg); > > > > ob = evas_object_rectangle_add > > (en->rp->edje->base.evas); evas_object_color_set(ob, 0, 0, 0, 0); > > @@ -878,8 +868,6 @@ > > while (an->sel) > > { > > Sel *sel = an->sel->data; > > - en->rp->edje->subobjs = eina_list_remove > > (en->rp->edje->subobjs, sel->obj_bg); > > - en->rp->edje->subobjs = eina_list_remove > > (en->rp->edje->subobjs, sel->obj_fg); if (sel->obj_bg) evas_object_del > > (sel->obj_bg); if (sel->obj_fg) evas_object_del(sel->obj_fg); > > if (sel->obj) evas_object_del(sel->obj); > > @@ -2012,7 +2000,7 @@ > > evas_object_stack_below(en->cursor_bg, rp->object); > > evas_object_clip_set(en->cursor_bg, evas_object_clip_get(rp->object)); > > evas_object_pass_events_set(en->cursor_bg, EINA_TRUE); > > - rp->edje->subobjs = eina_list_append(rp->edje->subobjs, en->cursor_bg); > > + _edje_subobj_register(en->rp->edje, en->cursor_bg); > > > > en->cursor_fg = edje_object_add(rp->edje->base.evas); > > edje_object_file_set(en->cursor_fg, rp->edje->path, rp->part->source4); > > @@ -2020,7 +2008,7 @@ > > evas_object_stack_above(en->cursor_fg, rp->object); > > evas_object_clip_set(en->cursor_fg, evas_object_clip_get(rp->object)); > > evas_object_pass_events_set(en->cursor_fg, EINA_TRUE); > > - rp->edje->subobjs = eina_list_append(rp->edje->subobjs, en->cursor_fg); > > + _edje_subobj_register(en->rp->edje, en->cursor_fg); > > > > if (rp->part->entry_mode >= EDJE_ENTRY_EDIT_MODE_EDITABLE) > > { > > @@ -2086,8 +2074,6 @@ > > #ifdef HAVE_ECORE_IMF > > _preedit_clear(en); > > #endif > > - rp->edje->subobjs = eina_list_remove(rp->edje->subobjs, en->cursor_bg); > > - rp->edje->subobjs = eina_list_remove(rp->edje->subobjs, en->cursor_fg); > > evas_object_del(en->cursor_bg); > > evas_object_del(en->cursor_fg); > > > > > > Modified: trunk/edje/src/lib/edje_load.c > > =================================================================== > > --- trunk/edje/src/lib/edje_load.c 2011-11-18 09:52:58 UTC (rev > > 65383) +++ trunk/edje/src/lib/edje_load.c 2011-11-18 10:35:38 UTC > > (rev 65384) @@ -771,6 +771,8 @@ > > pack_it = NULL; > > } > > } > > + if (source) > > + _edje_subobj_register(ed, child_obj); > > } > > } > > > > > > Modified: trunk/edje/src/lib/edje_lua2.c > > =================================================================== > > --- trunk/edje/src/lib/edje_lua2.c 2011-11-18 09:52:58 UTC (rev > > 65383) +++ trunk/edje/src/lib/edje_lua2.c 2011-11-18 10:35:38 UTC > > (rev 65384) @@ -1410,6 +1410,7 @@ > > { > > _ELUA_PLANT_EVAS_OBJECT(Edje_Lua_Evas_Object, _elua_evas_edje_meta, > > _elua_evas_obj_free) elo->evas_obj = edje_object_add(evas_object_evas_get > > (ed->obj)); > > + _edje_subobj_register(ed, elo->evas_obj); > > _elua_polish_evas_object(ed, elo); > > return 1; > > } > > > > Modified: trunk/edje/src/lib/edje_message_queue.c > > =================================================================== > > --- trunk/edje/src/lib/edje_message_queue.c 2011-11-18 09:52:58 UTC > > (rev 65383) +++ trunk/edje/src/lib/edje_message_queue.c 2011-11-18 > > 10:35:38 UTC (rev 65384) @@ -17,12 +17,19 @@ > > edje_object_message_send(Evas_Object *obj, Edje_Message_Type type, int id, > > void *msg) { > > Edje *ed; > > - unsigned int i; > > + Eina_List *l; > > + Evas_Object *o; > > > > ed = _edje_fetch(obj); > > if (!ed) return; > > - > > _edje_message_send(ed, EDJE_QUEUE_SCRIPT, type, id, msg); > > + EINA_LIST_FOREACH(ed->subobjs, l, o) > > + { > > + edje_object_message_send(o, type, id, msg); > > + } > > +/* old manual part walking code to send messages to children - should all > > + * be in subobjs if we care > > + unsigned int i; > > > > for (i = 0; i < ed->table_parts_size; i++) > > { > > @@ -47,6 +54,7 @@ > > } > > } > > } > > + */ > > } > > > > > > @@ -208,10 +216,21 @@ > > void > > _edje_message_cb_set(Edje *ed, void (*func) (void *data, Evas_Object *obj, > > Edje_Message_Type type, int id, void *msg), void *data) { > > - unsigned int i; > > + Eina_List *l; > > + Evas_Object *o; > > > > ed->message.func = func; > > ed->message.data = data; > > + EINA_LIST_FOREACH(ed->subobjs, l, o) > > + { > > + Edje *edj2 = _edje_fetch(o); > > + if (!edj2) continue; > > + _edje_message_cb_set(edj2, func, data); > > + } > > +/* old manual part walking code to send messages to children - should all > > + * be in subobjs if we care > > + unsigned int i; > > + > > for (i = 0; i < ed->table_parts_size; i++) > > { > > Edje_Real_Part *rp = ed->table_parts[i]; > > @@ -234,6 +253,7 @@ > > } > > } > > } > > + */ > > } > > > > Edje_Message * > > > > Modified: trunk/edje/src/lib/edje_private.h > > =================================================================== > > --- trunk/edje/src/lib/edje_private.h 2011-11-18 09:52:58 UTC (rev > > 65383) +++ trunk/edje/src/lib/edje_private.h 2011-11-18 10:35:38 UTC > > (rev 65384) @@ -1964,6 +1964,8 @@ > > void _edje_lib_ref(void); > > void _edje_lib_unref(void); > > > > +void _edje_subobj_register(Edje *ed, Evas_Object *ob); > > + > > void _edje_multisense_init(void); > > void _edje_multisense_shutdown(void); > > Eina_Bool _edje_multisense_internal_sound_sample_play(Edje *ed, const char > > *sample_name, const double speed); > > > > Modified: trunk/edje/src/lib/edje_program.c > > =================================================================== > > --- trunk/edje/src/lib/edje_program.c 2011-11-18 09:52:58 UTC (rev > > 65383) +++ trunk/edje/src/lib/edje_program.c 2011-11-18 10:35:38 UTC > > (rev 65384) @@ -846,12 +846,9 @@ > > > > /* data should either be NULL or a malloc allocated data */ > > void > > -_edje_emit_full(Edje *ed, const char *sig, const char *src, void *data, > > - void (*free_func)(void *)) > > +_edje_emit_full(Edje *ed, const char *sig, const char *src, void *data, > > void (*free_func)(void *)) { > > Edje_Message_Signal emsg; > > - Eina_List *l; > > - Evas_Object *obj; > > const char *sep; > > > > if (ed->delete_me) return; > > @@ -991,6 +988,9 @@ > > { > > emsg.data = NULL; > > } > > +/* new sends code */ > > + edje_object_message_send(ed->obj, EDJE_MESSAGE_SIGNAL, 0, &emsg); > > +/* old send code - use api now > > _edje_message_send(ed, EDJE_QUEUE_SCRIPT, EDJE_MESSAGE_SIGNAL, 0, &emsg); > > EINA_LIST_FOREACH(ed->subobjs, l, obj) > > { > > @@ -1001,7 +1001,7 @@ > > if (ed2->delete_me) continue; > > _edje_message_send(ed2, EDJE_QUEUE_SCRIPT, EDJE_MESSAGE_SIGNAL, 0, > > &emsg); } > > - > > + */ > > if (emsg.data && (--(emsg.data->ref) == 0)) > > { > > if (emsg.data->free_func) > > > > Modified: trunk/edje/src/lib/edje_util.c > > =================================================================== > > --- trunk/edje/src/lib/edje_util.c 2011-11-18 09:52:58 UTC (rev > > 65383) +++ trunk/edje/src/lib/edje_util.c 2011-11-18 10:35:38 UTC > > (rev 65384) @@ -4297,5 +4297,21 @@ > > return es->str; > > } > > > > +static void > > +_cb_subobj_del(void *data, __UNUSED__ Evas *e, Evas_Object *obj, > > __UNUSED__ void *event_info) +{ > > + Edje *ed = data; > > + ed->subobjs = eina_list_remove(ed->subobjs, obj); > > + evas_object_event_callback_del_full(obj, EVAS_CALLBACK_DEL, > > + _cb_subobj_del, ed); > > +} > > > > +void > > +_edje_subobj_register(Edje *ed, Evas_Object *ob) > > +{ > > + ed->subobjs = eina_list_append(ed->subobjs, ob); > > + evas_object_event_callback_add(ob, EVAS_CALLBACK_DEL, > > + _cb_subobj_del, ed); > > +} > > + > > /* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ > > > > > > ------------------------------------------------------------------------------ > > All the data continuously generated in your IT infrastructure > > contains a definitive record of customers, application performance, > > security threats, fraudulent activity, and more. Splunk takes this > > data and makes sense of it. IT sense. And common sense. > > http://p.sf.net/sfu/splunk-novd2d > > _______________________________________________ > > enlightenment-svn mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/enlightenment-svn > > > > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure > contains a definitive record of customers, application performance, > security threats, fraudulent activity, and more. Splunk takes this > data and makes sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunk-novd2d > _______________________________________________ > enlightenment-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) [email protected] ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
