forked from enlightenment/efl
add recursie object find function - it will only look at elm children
not go into edje objects et.c and hunt their children too. should be more efficient than evas's recursive name finder. SVN revision: 66591
This commit is contained in:
parent
b8d342e49e
commit
1713de6106
|
@ -1257,7 +1257,7 @@ extern "C" {
|
|||
*
|
||||
* @param obj The parent object whose children to look at
|
||||
* @param name The name of the child to find
|
||||
* @param recurse Set to EINA_TRUE if you should recurse into children of children
|
||||
* @param recurse Set to thge maximum number of levels to recurse (0 == none, 1 is only look at 1 level of children etc.)
|
||||
* @return The found object of that name, or NULL if none is found
|
||||
*
|
||||
* This function searches the children (or recursively children of
|
||||
|
@ -1265,13 +1265,14 @@ extern "C" {
|
|||
* the name of @p name. If the child is found the object is returned, or
|
||||
* NULL is returned. You can set the name of an object with
|
||||
* evas_object_name_set(). If the name is not unique within the child
|
||||
* objects (or the tree is @p recurse is set to EINA_TRUE) then it is
|
||||
* objects (or the tree is @p recurse is greater than 0) then it is
|
||||
* undefined as to which child of that name is returned, so ensure the name
|
||||
* is unique amongst children.
|
||||
* is unique amongst children. If recurse is set to -1 it will recurse
|
||||
* without limit.
|
||||
*
|
||||
* @ingroup General
|
||||
*/
|
||||
EAPI Evas_Object *elm_object_name_find(const Evas_Object *obj, const char *name, Eina_Bool recurse);
|
||||
EAPI Evas_Object *elm_object_name_find(const Evas_Object *obj, const char *name, int recurse);
|
||||
|
||||
/**
|
||||
* Get the widget object's handle which contains a given item
|
||||
|
|
|
@ -2090,7 +2090,7 @@ elm_object_access_info_set(Evas_Object *obj, const char *txt)
|
|||
}
|
||||
|
||||
EAPI Evas_Object *
|
||||
elm_object_name_find(const Evas_Object *obj, const char *name, Eina_Bool recurse)
|
||||
elm_object_name_find(const Evas_Object *obj, const char *name, int recurse)
|
||||
{
|
||||
return elm_widget_name_find(obj, name, recurse);
|
||||
}
|
||||
|
|
|
@ -2638,44 +2638,43 @@ elm_widget_type_check(const Evas_Object *obj,
|
|||
}
|
||||
|
||||
static Evas_Object *
|
||||
_widget_name_find(const Evas_Object *obj, const char *name, Eina_Bool recurse)
|
||||
_widget_name_find(const Evas_Object *obj, const char *name, int recurse)
|
||||
{
|
||||
Eina_List *l;
|
||||
Evas_Object *child;
|
||||
const char *s;
|
||||
INTERNAL_ENTRY NULL;
|
||||
void **childlist = NULL;
|
||||
|
||||
if (!_elm_widget_is(obj)) return NULL;
|
||||
if (sd->resize_obj)
|
||||
{
|
||||
s = evas_object_name_get(sd->resize_obj);
|
||||
if ((s) && (!strcmp(s, name))) return sd->resize_obj;
|
||||
if ((recurse) &&
|
||||
((child = _widget_name_find(sd->resize_obj, name, recurse))))
|
||||
if ((recurse != 0) &&
|
||||
((child = _widget_name_find(sd->resize_obj, name, recurse - 1))))
|
||||
return child;
|
||||
}
|
||||
EINA_LIST_FOREACH(sd->subobjs, l, child)
|
||||
{
|
||||
s = evas_object_name_get(child);
|
||||
if ((s) && (!strcmp(s, name))) return child;
|
||||
if ((recurse) &&
|
||||
((child = _widget_name_find(child, name, recurse))))
|
||||
if ((recurse != 0) &&
|
||||
((child = _widget_name_find(child, name, recurse - 1))))
|
||||
return child;
|
||||
}
|
||||
if (sd->hover_obj)
|
||||
{
|
||||
s = evas_object_name_get(sd->hover_obj);
|
||||
if ((s) && (!strcmp(s, name))) return sd->hover_obj;
|
||||
if ((recurse) &&
|
||||
((child = _widget_name_find(sd->hover_obj, name, recurse))))
|
||||
if ((recurse != 0) &&
|
||||
((child = _widget_name_find(sd->hover_obj, name, recurse - 1))))
|
||||
return child;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EAPI Evas_Object *
|
||||
elm_widget_name_find(const Evas_Object *obj, const char *name, Eina_Bool recurse)
|
||||
elm_widget_name_find(const Evas_Object *obj, const char *name, int recurse)
|
||||
{
|
||||
API_ENTRY return NULL;
|
||||
if (!name) return NULL;
|
||||
|
|
|
@ -412,7 +412,7 @@ EAPI void elm_widget_type_register(const char **ptr);
|
|||
EAPI void elm_widget_type_unregister(const char **ptr);
|
||||
EAPI Eina_Bool elm_widget_is_check(const Evas_Object *obj);
|
||||
EAPI Eina_Bool elm_widget_type_check(const Evas_Object *obj, const char *type, const char *func);
|
||||
EAPI Evas_Object *elm_widget_name_find(const Evas_Object *obj, const char *name, Eina_Bool recurse);
|
||||
EAPI Evas_Object *elm_widget_name_find(const Evas_Object *obj, const char *name, int recurse);
|
||||
EAPI Eina_List *elm_widget_stringlist_get(const char *str);
|
||||
EAPI void elm_widget_stringlist_free(Eina_List *list);
|
||||
EAPI void elm_widget_focus_hide_handle(Evas_Object *obj);
|
||||
|
|
Loading…
Reference in New Issue