cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=c515ee36e660fdbf7cc867189d1ea60796d0b3c4
commit c515ee36e660fdbf7cc867189d1ea60796d0b3c4 Author: Cedric BAIL <[email protected]> Date: Thu Mar 29 13:57:31 2018 -0700 evas: parent of an Efl.Vg.Node can also be a Efl.Canvas.VG --- src/lib/evas/canvas/evas_vg_node.c | 18 ++++++++++++------ src/lib/evas/canvas/evas_vg_private.h | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/lib/evas/canvas/evas_vg_node.c b/src/lib/evas/canvas/evas_vg_node.c index 922a396ae4..569e77b5f9 100644 --- a/src/lib/evas/canvas/evas_vg_node.c +++ b/src/lib/evas/canvas/evas_vg_node.c @@ -205,8 +205,8 @@ _efl_canvas_vg_node_efl_gfx_geometry_get(Eo *obj, Efl_Canvas_VG_Node_Data *pd EI // Parent should be a container otherwise dismissing the stacking operation static Eina_Bool _efl_canvas_vg_node_parent_checked_get(Eo *obj, - Eo **parent, - Efl_Canvas_VG_Container_Data **cd) + Eo **parent, + Efl_Canvas_VG_Container_Data **cd) { *cd = NULL; *parent = efl_parent_get(obj); @@ -222,7 +222,8 @@ _efl_canvas_vg_node_parent_checked_get(Eo *obj, } else if (efl_isa(*parent, EFL_CANVAS_VG_CLASS)) { - goto on_error; + *cd = NULL; + *parent = NULL; } else if (*parent != NULL) { @@ -327,7 +328,8 @@ _efl_canvas_vg_node_efl_object_parent_set(Eo *obj, { Efl_Canvas_VG_Container_Data *cd = NULL; Efl_Canvas_VG_Container_Data *old_cd = NULL; - Eo *old_parent; + Eo *old_parent = NULL; + Eina_Bool parent_container = EINA_TRUE; if (efl_isa(parent, EFL_CANVAS_VG_CONTAINER_CLASS)) { @@ -338,9 +340,13 @@ _efl_canvas_vg_node_efl_object_parent_set(Eo *obj, goto on_error; } } + else if (efl_isa(parent, EFL_CANVAS_VG_CLASS)) + { + parent_container = EINA_FALSE; + } else if (parent != NULL) { - ERR("%p not even an EVAS_VG_CLASS.", parent); + ERR("%p not even an Vector Graphics related class.", parent); goto on_error; } @@ -368,7 +374,7 @@ _efl_canvas_vg_node_efl_object_parent_set(Eo *obj, _efl_canvas_vg_node_changed(old_parent); _efl_canvas_vg_node_changed(obj); - _efl_canvas_vg_node_changed(parent); + if (parent_container) _efl_canvas_vg_node_changed(parent); return ; diff --git a/src/lib/evas/canvas/evas_vg_private.h b/src/lib/evas/canvas/evas_vg_private.h index 588db73cb5..ecf025b5d8 100644 --- a/src/lib/evas/canvas/evas_vg_private.h +++ b/src/lib/evas/canvas/evas_vg_private.h @@ -126,7 +126,8 @@ static inline void _efl_canvas_vg_node_changed(Eo *obj) { Efl_Gfx_Path_Change_Event ev = { EFL_GFX_CHANGE_FLAG_FILL }; - efl_event_callback_call(obj, EFL_GFX_PATH_EVENT_CHANGED, &ev); + + if (obj) efl_event_callback_call(obj, EFL_GFX_PATH_EVENT_CHANGED, &ev); } static inline void * --
