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 ?

Vincent

>
>
>
> 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

Reply via email to