Eobj: Only try composite objects when really supposed to.
authortasn <tasn>
Thu, 12 Apr 2012 10:19:50 +0000 (10:19 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 12 Apr 2012 10:19:50 +0000 (10:19 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/PROTO/eobj@70132 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

lib/eobj.c

index 17f29c0..2b6f96a 100644 (file)
@@ -319,7 +319,7 @@ _eobj_op_id_desc_get(Eobj_Op op)
 }
 
 static Eina_Bool
-_eobj_op_internal(Eobj *obj, Eobj_Op op, va_list *p_list)
+_eobj_op_internal(Eobj *obj, Eobj_Op op, va_list *p_list, Eina_Bool try_comp)
 {
    const Eobj_Class *klass;
    Eina_Bool ret = EINA_FALSE;
@@ -341,13 +341,14 @@ _eobj_op_internal(Eobj *obj, Eobj_Op op, va_list *p_list)
         klass = _eobj_kls_itr_next(obj);
      }
 
-   /* Try composite objects */
+   /* Try composite objects only if it was requested. */
+   if (try_comp)
      {
         Eina_List *itr;
         Eobj *emb_obj;
         EINA_LIST_FOREACH(obj->composite_objects, itr, emb_obj)
           {
-             if (_eobj_op_internal(emb_obj, op, p_list))
+             if (_eobj_op_internal(emb_obj, op, p_list, EINA_TRUE))
                {
                   ret = EINA_TRUE;
                   goto end;
@@ -370,7 +371,7 @@ _eobj_ops_internal(Eobj *obj, va_list *p_list)
    op = va_arg(*p_list, Eobj_Op);
    while (op)
      {
-        if (!_eobj_op_internal(obj, op, p_list))
+        if (!_eobj_op_internal(obj, op, p_list, EINA_TRUE))
           {
              const Eobj_Op_Description *desc = _eobj_op_id_desc_get(op);
              const char *_id_name = (desc) ? desc->name : NULL;
@@ -410,7 +411,7 @@ eobj_super_do(Eobj *obj, Eobj_Op op, ...)
 
    /* Advance the kls itr. */
    obj_klass = _eobj_kls_itr_next(obj);
-   if (!_eobj_op_internal(obj, op, &p_list))
+   if (!_eobj_op_internal(obj, op, &p_list, EINA_FALSE))
      {
         const Eobj_Op_Description *desc = _eobj_op_id_desc_get(op);
         const char *_id_name = (desc) ? desc->name : NULL;