Eobj: Only try composite objects when really supposed to.

SVN revision: 70132
This commit is contained in:
Tom Hacohen 2012-04-12 10:19:50 +00:00
parent f8c89e84a2
commit c92e62b5eb
1 changed files with 6 additions and 5 deletions

View File

@ -319,7 +319,7 @@ _eobj_op_id_desc_get(Eobj_Op op)
} }
static Eina_Bool 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; const Eobj_Class *klass;
Eina_Bool ret = EINA_FALSE; 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); klass = _eobj_kls_itr_next(obj);
} }
/* Try composite objects */ /* Try composite objects only if it was requested. */
if (try_comp)
{ {
Eina_List *itr; Eina_List *itr;
Eobj *emb_obj; Eobj *emb_obj;
EINA_LIST_FOREACH(obj->composite_objects, itr, 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; ret = EINA_TRUE;
goto end; goto end;
@ -370,7 +371,7 @@ _eobj_ops_internal(Eobj *obj, va_list *p_list)
op = va_arg(*p_list, Eobj_Op); op = va_arg(*p_list, Eobj_Op);
while (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 Eobj_Op_Description *desc = _eobj_op_id_desc_get(op);
const char *_id_name = (desc) ? desc->name : NULL; const char *_id_name = (desc) ? desc->name : NULL;
@ -410,7 +411,7 @@ eobj_super_do(Eobj *obj, Eobj_Op op, ...)
/* Advance the kls itr. */ /* Advance the kls itr. */
obj_klass = _eobj_kls_itr_next(obj); 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 Eobj_Op_Description *desc = _eobj_op_id_desc_get(op);
const char *_id_name = (desc) ? desc->name : NULL; const char *_id_name = (desc) ? desc->name : NULL;