2011/12/5 Enlightenment SVN <no-re...@enlightenment.org>:
> Log:
> fix super annoying elm_win bug that went something like this:
>
>  win_resize_object_add(win, subobj);
>  object_content_set(otherobj, subobj);
>  object_del(win);
>
>
>  ERR<21326>:elm-externals elm_widget.c:978 elm_widget_sub_object_del() 
> removing sub object 0xdeadbeef (some_stupid_widget) from parent 0xRRRRRRRR 
> (win), but elm-parent is different 0xFUCKTHIS (NOT EVEN A WIDGET)!
>
>
> Author:       discomfitor
> Date:         2011-12-04 20:26:32 -0800 (Sun, 04 Dec 2011)
> New Revision: 65884
> Trac:         http://trac.enlightenment.org/e/changeset/65884
>
> Modified:
>  trunk/elementary/src/lib/elm_widget.c trunk/elementary/src/lib/elm_win.c
>
> Modified: trunk/elementary/src/lib/elm_widget.c
> ===================================================================
> --- trunk/elementary/src/lib/elm_widget.c       2011-12-05 04:03:12 UTC (rev 
> 65883)
> +++ trunk/elementary/src/lib/elm_widget.c       2011-12-05 04:26:32 UTC (rev 
> 65884)
> @@ -945,7 +945,7 @@
>                                             _sub_obj_del);
>           }
>      }
> -
> +   evas_object_smart_callback_call(sobj, 
> "win-resize-del-private-dont-use-this. seriously", NULL);

Don't do this, the object added as resize object to the window is added
to the widgets sub-objects list, so when it's deleted or moved somewhere else
it should trigger the "sub-object-del" smart callback. The window should
be listening to add instead of creating random private things in other
components.

>    sd->subobjs = eina_list_append(sd->subobjs, sobj);
>    evas_object_data_set(sobj, "elm-parent", obj);
>    evas_object_event_callback_add(sobj, EVAS_CALLBACK_DEL, _sub_obj_del, sd);
>
> Modified: trunk/elementary/src/lib/elm_win.c
> ===================================================================
> --- trunk/elementary/src/lib/elm_win.c  2011-12-05 04:03:12 UTC (rev 65883)
> +++ trunk/elementary/src/lib/elm_win.c  2011-12-05 04:26:32 UTC (rev 65884)
> @@ -1367,6 +1367,21 @@
>                                   _win_img_focus_out, win);
>  }
>
> +static void
> +_subobj_del(Evas_Object *obj, Evas_Object *subobj, void *event_info 
> __UNUSED__)
> +{
> +   Elm_Win *win = elm_widget_data_get(obj);
> +   evas_object_event_callback_del_full(subobj,
> +                                       EVAS_CALLBACK_CHANGED_SIZE_HINTS,
> +                                       
> _elm_win_subobj_callback_changed_size_hints,
> +                                       obj);
> +   evas_object_event_callback_del_full(subobj, EVAS_CALLBACK_DEL,
> +                                       _elm_win_subobj_callback_del, obj);
> +   win->subobjs = eina_list_remove(win->subobjs, subobj);
> +   evas_object_smart_callback_del(subobj, 
> "win-resize-del-private-dont-use-this. seriously", 
> (Evas_Smart_Cb)_subobj_del);
> +   _elm_win_eval_subobjs(obj);
> +}
> +
>  EAPI Evas_Object *
>  elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
>  {
> @@ -1678,6 +1693,7 @@
>    evas_object_geometry_get(obj, NULL, NULL, &w, &h);
>    evas_object_move(subobj, 0, 0);
>    evas_object_resize(subobj, w, h);
> +   evas_object_smart_callback_add(subobj, 
> "win-resize-del-private-dont-use-this. seriously", 
> (Evas_Smart_Cb)_subobj_del, obj);
>    _elm_win_eval_subobjs(obj);
>  }
>
>
>
> ------------------------------------------------------------------------------
> 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
> enlightenment-...@lists.sourceforge.net
> 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
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to