forked from enlightenment/efl
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:
parent
23851808bb
commit
846563f13c
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue