Elm_Object_Item *item);
static void _decorate_item_set(Elm_Gen_Item *);
static void _internal_elm_genlist_clear(Evas_Object *obj);
-static Eina_Bool _item_filtered_get(Elm_Gen_Item *it);
+static Eina_Bool _item_filtered_get(Elm_Gen_Item *it, Elm_Genlist_Data *sd);
static void _elm_genlist_tree_effect_stop(Elm_Genlist_Data *sd);
static Eina_Bool _elm_genlist_tree_effect_setup(Elm_Genlist_Data *sd);
sd = it->item->wsd;
if (sd->reorder_it == it) continue;
- if (!it->filtered && sd->filter_data && it->itc->func.filter_get)
- _item_filtered_get(it);
+ if (it->itc->func.filter_get)
+ _item_filtered_get(it, sd);
if (it->hide)
{
if (it->realized) evas_object_hide(VIEW(it));
{
show_me |= it->item->show_me;
- if (!it->filtered) _item_filtered_get(it);
- if (it->hide)
+ if (!_item_filtered_get(it, itb->sd))
{
if (it->realized) evas_object_hide(VIEW(it));
continue;
{
Elm_Gen_Item *it = ELM_GEN_ITEM_FROM_INLIST(sd->items);
- while (it && sd->filter && !_item_filtered_get(it))
+ while (it && sd->filter && !_item_filtered_get(it, sd))
it = ELM_GEN_ITEM_NEXT(it);
return EO_OBJ(it);
if (!sd->items) return NULL;
it = ELM_GEN_ITEM_FROM_INLIST(sd->items->last);
- while (it && sd->filter && !_item_filtered_get(it))
+ while (it && sd->filter && !_item_filtered_get(it, sd))
it = ELM_GEN_ITEM_PREV(it);
return EO_OBJ(it);
ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
do it = ELM_GEN_ITEM_NEXT(it);
- while (it && sd->filter && !_item_filtered_get(it));
+ while (it && sd->filter && !_item_filtered_get(it, sd));
return EO_OBJ(it);
}
ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
do it = ELM_GEN_ITEM_PREV(it);
- while (it && sd->filter && !_item_filtered_get(it));
+ while (it && sd->filter && !_item_filtered_get(it, sd));
return EO_OBJ(it);
}
ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
if (sd->filter_data)
{
- if ((it->parent && !_item_filtered_get(it->parent)) ||
+ if ((it->parent && !_item_filtered_get(it->parent, sd)) ||
(it->itc->func.filter_get &&
!it->itc->func.filter_get(
(void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)),
// Returns true if the item is not filtered out, but remains visible.
static Eina_Bool
-_item_filtered_get(Elm_Gen_Item *it)
+_item_filtered_get(Elm_Gen_Item *it, Elm_Genlist_Data *sd)
{
Eina_List *l;
- if (!it) return EINA_FALSE;
- ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
+ /* no filter exists: item will always be visible */
+ if (!sd->filter_data) return EINA_TRUE;
if (!it->filtered)
{
l = eina_list_data_find_list(sd->filter_queue, it);
efl_canvas_group_change(sd->obj);
sd->need_calc = EINA_TRUE;
}
- if (!it->hide) return EINA_TRUE;
- return EINA_FALSE;
+ return !it->hide;
}
static int
{
item = ELM_GENLIST_FILTER_ITERATOR_ITEM_GET(iter->current, Elm_Gen_Item);
iter->current = iter->current->next;
- if (_item_filtered_get(item))
+ if (_item_filtered_get(item, item->item->block->sd))
{
if (data)
*data = EO_OBJ(item);