discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=b9c45c61598141d496f487eb6ab4f5f94c44e021

commit b9c45c61598141d496f487eb6ab4f5f94c44e021
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Thu Feb 4 16:23:07 2016 -0500

    check whether to reapply all callbacks for comp util objects when changing 
type
    
    in the case where the existence of a zoomap in the comp frame edje has 
changed
    during the course of changing the type, these callbacks must be updated 
with new
    data params in order to ensure accurate operations during callbacks
---
 src/bin/e_comp_object.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 6473b47..06b6943 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -2704,6 +2704,7 @@ e_comp_object_util_type_set(Evas_Object *obj, 
E_Comp_Object_Type type)
    if (!content) return;
    {
       Evas_Object *child;
+      Eina_Bool redo = EINA_FALSE;
 
       if (eina_streq(evas_object_type_get(content), "e_zoomap"))
         child = e_zoomap_child_get(content);
@@ -2719,14 +2720,34 @@ e_comp_object_util_type_set(Evas_Object *obj, 
E_Comp_Object_Type type)
            e_zoomap_child_set(content, child);
            e_zoomap_child_resize(content, w, h);
            evas_object_show(content);
+           redo = EINA_TRUE;
         }
       else if (child != content)
         {
            e_zoomap_child_set(content, NULL);
            evas_object_del(content);
            content = child;
+           redo = EINA_TRUE;
         }
       edje_object_part_swallow(obj, "e.swallow.content", content);
+
+      if (!redo) return;
+      if (content == child) content = NULL;
+      edje_object_signal_callback_del(obj, "e,action,*,done", "e", 
_e_comp_object_util_done_defer);
+      evas_object_intercept_show_callback_del(obj, _e_comp_object_util_show);
+      evas_object_intercept_hide_callback_del(obj, _e_comp_object_util_hide);
+      evas_object_event_callback_del(obj, EVAS_CALLBACK_MOVE, 
_e_comp_object_util_moveresize);
+      evas_object_event_callback_del(obj, EVAS_CALLBACK_DEL, 
_e_comp_object_util_del);
+      evas_object_event_callback_del(obj, EVAS_CALLBACK_RESIZE, 
_e_comp_object_util_moveresize);
+      evas_object_event_callback_del(obj, EVAS_CALLBACK_RESTACK, 
_e_comp_object_util_restack);
+
+      edje_object_signal_callback_add(obj, "e,action,*,done", "e", 
_e_comp_object_util_done_defer, content);
+      evas_object_intercept_show_callback_add(obj, _e_comp_object_util_show, 
content);
+      evas_object_intercept_hide_callback_add(obj, _e_comp_object_util_hide, 
content);
+      evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, 
_e_comp_object_util_moveresize, content);
+      evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, 
_e_comp_object_util_del, content);
+      evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, 
_e_comp_object_util_moveresize, content);
+      evas_object_event_callback_add(obj, EVAS_CALLBACK_RESTACK, 
_e_comp_object_util_restack, content);
    }
 }
 

-- 


Reply via email to