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 *

-- 


Reply via email to