elm/genlist: slightly simplify use of _item_filtered_get()

passing the smart data here (which we always have) makes the function
a little clearer to read. similarly, we can check whether the filter_data
pointer is set inside the function to avoid having to check it everywhere else

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10525
This commit is contained in:
Mike Blumenkrantz 2019-10-23 10:36:01 -04:00
parent 78e567e205
commit b882209f8c
1 changed files with 14 additions and 16 deletions

View File

@ -166,7 +166,7 @@ static void _access_activate_cb(void *data EINA_UNUSED,
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);
@ -2421,8 +2421,8 @@ _item_block_position(Item_Block *itb, const int blk_idx)
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));
@ -5398,8 +5398,7 @@ _item_block_recalc(Item_Block *itb, const int blk_idx, Eina_Bool qadd)
{
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;
@ -6974,7 +6973,7 @@ _elm_genlist_first_item_get(const Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd)
{
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);
@ -6988,7 +6987,7 @@ _elm_genlist_last_item_get(const Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd)
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);
@ -7000,7 +6999,7 @@ _elm_genlist_item_next_get(const Eo *eo_it EINA_UNUSED, Elm_Gen_Item *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);
}
@ -7011,7 +7010,7 @@ _elm_genlist_item_prev_get(const Eo *eo_it EINA_UNUSED, Elm_Gen_Item *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);
}
@ -7854,7 +7853,7 @@ _filter_item_internal(Elm_Gen_Item *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)),
@ -7873,11 +7872,11 @@ _filter_item_internal(Elm_Gen_Item *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);
@ -7901,8 +7900,7 @@ _item_filtered_get(Elm_Gen_Item *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
@ -8026,7 +8024,7 @@ _filter_iterator_next(Elm_Genlist_Filter *iter, void **data)
{
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);