I removed it->generation, sd->generation, it->walking, sd->walking

flags.
This flags was used for deferring deletion of genlist items.
After deferred, items can be cleanup when _item_select() is called.
This flags was used for preventing crash when subitems are deleted right
after one item is deleted.

But this made genlist code too complicated and could hide internal
issues. One of the issues is incorrect use of EINA_INSTLIST_FOREACH (or
forloop). Because sub items can be deleted when one item is deleted, I
used whlie loop and EINA_INLIST_CONTAINER_GET(sd->items->last, xx) and
not defer the deletion. This has no problem evenif inlist sd->items is
changed inside the while-loop.
This commit is contained in:
Tae-Hwan Kim 2013-04-15 12:00:43 +09:00 committed by Carsten Haitzler (Rasterman)
parent e17cfb925f
commit e939692a78
2 changed files with 50 additions and 126 deletions

View File

@ -1075,8 +1075,7 @@ _decorate_all_item_realize(Elm_Gen_Item *it,
const char *stacking; const char *stacking;
const char *stacking_even; const char *stacking_even;
if ((!it) || (it->item->decorate_all_item_realized) || if ((!it) || (it->item->decorate_all_item_realized))
(it->generation < GL_IT(it)->wsd->generation))
return; return;
it->deco_all_view = edje_object_add(evas_object_evas_get(WIDGET(it))); it->deco_all_view = edje_object_add(evas_object_evas_get(WIDGET(it)));
@ -1466,7 +1465,6 @@ _item_realize(Elm_Gen_Item *it,
char buf[1024]; char buf[1024];
int tsize = 20; int tsize = 20;
if (it->generation < GL_IT(it)->wsd->generation) return;
if (it->realized) if (it->realized)
{ {
if (it->item->order_num_in != in) if (it->item->order_num_in != in)
@ -1988,8 +1986,7 @@ _item_block_position(Item_Block *itb,
EINA_LIST_FOREACH(itb->items, l, it) EINA_LIST_FOREACH(itb->items, l, it)
{ {
if (it->generation < GL_IT(it)->wsd->generation) continue; if (GL_IT(it)->wsd->reorder_it == it)
else if (GL_IT(it)->wsd->reorder_it == it)
continue; continue;
it->x = 0; it->x = 0;
@ -2287,7 +2284,7 @@ _item_single_select_up(Elm_Genlist_Smart_Data *sd)
if (!sd->selected) if (!sd->selected)
{ {
prev = ELM_GEN_ITEM_FROM_INLIST(sd->items->last); prev = ELM_GEN_ITEM_FROM_INLIST(sd->items->last);
while ((prev) && (prev->generation < sd->generation)) while (prev)
prev = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(prev)->prev); prev = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(prev)->prev);
} }
else else
@ -2311,7 +2308,7 @@ _item_single_select_down(Elm_Genlist_Smart_Data *sd)
if (!sd->selected) if (!sd->selected)
{ {
next = ELM_GEN_ITEM_FROM_INLIST(sd->items); next = ELM_GEN_ITEM_FROM_INLIST(sd->items);
while ((next) && (next->generation < sd->generation)) while (next)
next = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(next)->next); next = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(next)->next);
} }
else else
@ -2695,7 +2692,6 @@ _item_highlight(Elm_Gen_Item *it)
if ((GL_IT(it)->wsd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || if ((GL_IT(it)->wsd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
(!GL_IT(it)->wsd->highlight) || (!GL_IT(it)->wsd->highlight) ||
(it->generation < GL_IT(it)->wsd->generation) ||
(it->highlighted) || elm_widget_item_disabled_get(it) || (it->highlighted) || elm_widget_item_disabled_get(it) ||
(it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || (it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
(it->item->deco_it_view) || (it->item->deco_it_view) ||
@ -2721,7 +2717,7 @@ _item_highlight(Elm_Gen_Item *it)
static void static void
_item_unhighlight(Elm_Gen_Item *it) _item_unhighlight(Elm_Gen_Item *it)
{ {
if ((it->generation < GL_IT(it)->wsd->generation) || (!it->highlighted)) if (!it->highlighted)
return; return;
edje_object_signal_emit(VIEW(it), "elm,state,unselected", "elm"); edje_object_signal_emit(VIEW(it), "elm,state,unselected", "elm");
@ -2913,11 +2909,6 @@ static void
_elm_genlist_item_del_not_serious(Elm_Gen_Item *it) _elm_genlist_item_del_not_serious(Elm_Gen_Item *it)
{ {
elm_widget_item_pre_notify_del(it); elm_widget_item_pre_notify_del(it);
it->generation = GL_IT(it)->wsd->generation - 1; /* This means that
* the item is
* deleted */
if (it->walking > 0) return;
if (it->selected) if (it->selected)
GL_IT(it)->wsd->selected = GL_IT(it)->wsd->selected =
@ -2936,7 +2927,6 @@ _elm_genlist_item_del_serious(Elm_Gen_Item *it)
eina_inlist_remove(GL_IT(it)->wsd->items, EINA_INLIST_GET(it)); eina_inlist_remove(GL_IT(it)->wsd->items, EINA_INLIST_GET(it));
if (it->tooltip.del_cb) if (it->tooltip.del_cb)
it->tooltip.del_cb((void *)it->tooltip.data, WIDGET(it), it); it->tooltip.del_cb((void *)it->tooltip.data, WIDGET(it), it);
GL_IT(it)->wsd->walking -= it->walking;
if (it->long_timer) if (it->long_timer)
{ {
ecore_timer_del(it->long_timer); ecore_timer_del(it->long_timer);
@ -3013,7 +3003,6 @@ _item_del(Elm_Gen_Item *it)
static void static void
_item_unselect(Elm_Gen_Item *it) _item_unselect(Elm_Gen_Item *it)
{ {
if ((it->generation < GL_IT(it)->wsd->generation)) return;
_item_unhighlight(it); /* unhighlight the item first */ _item_unhighlight(it); /* unhighlight the item first */
if (!it->selected) return; /* then check whether the item is selected */ if (!it->selected) return; /* then check whether the item is selected */
@ -4237,8 +4226,7 @@ _decorate_item_finished_signal_cb(void *data,
te = evas_object_evas_get(obj); te = evas_object_evas_get(obj);
if ((it->generation < GL_IT(it)->wsd->generation) || (!it->realized) if ((!it->realized) || (!it->item->deco_it_view)) return;
|| (!it->item->deco_it_view)) return;
evas_event_freeze(te); evas_event_freeze(te);
it->item->nocache_once = EINA_FALSE; it->item->nocache_once = EINA_FALSE;
@ -4375,7 +4363,6 @@ _item_block_recalc(Item_Block *itb,
itb->num = in; itb->num = in;
EINA_LIST_FOREACH(itb->items, l, it) EINA_LIST_FOREACH(itb->items, l, it)
{ {
if (it->generation < GL_IT(it)->wsd->generation) continue;
show_me |= it->item->show_me; show_me |= it->item->show_me;
if (!itb->realized) if (!itb->realized)
{ {
@ -4609,8 +4596,7 @@ _decorate_item_realize(Elm_Gen_Item *it)
char buf[1024]; char buf[1024];
Evas_Object *obj = (GL_IT(it)->wsd)->obj; Evas_Object *obj = (GL_IT(it)->wsd)->obj;
if ((it->item->deco_it_view) || (it->generation < if (it->item->deco_it_view) return;
GL_IT(it)->wsd->generation)) return;
evas_event_freeze(evas_object_evas_get(obj)); evas_event_freeze(evas_object_evas_get(obj));
it->item->deco_it_view = edje_object_add(evas_object_evas_get(WIDGET(it))); it->item->deco_it_view = edje_object_add(evas_object_evas_get(WIDGET(it)));
@ -4750,8 +4736,6 @@ _elm_genlist_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
elm_widget_can_focus_set(obj, EINA_TRUE); elm_widget_can_focus_set(obj, EINA_TRUE);
elm_widget_on_show_region_hook_set(obj, _show_region_hook, NULL); elm_widget_on_show_region_hook_set(obj, _show_region_hook, NULL);
priv->generation = 1;
if (!elm_layout_theme_set if (!elm_layout_theme_set
(obj, "genlist", "base", elm_widget_style_get(obj))) (obj, "genlist", "base", elm_widget_style_get(obj)))
CRITICAL("Failed to set layout!"); CRITICAL("Failed to set layout!");
@ -4943,46 +4927,27 @@ _clear(Elm_Genlist_Smart_Data *sd)
} }
static void static void
_elm_genlist_clear(Evas_Object *obj, _elm_genlist_clear(Evas_Object *obj)
Eina_Bool standby)
{ {
Eina_Inlist *next, *l; Elm_Gen_Item *it;
ELM_GENLIST_DATA_GET(obj, sd); ELM_GENLIST_DATA_GET(obj, sd);
if (!standby) sd->generation++;
if (sd->state) if (sd->state)
{ {
eina_inlist_sorted_state_free(sd->state); eina_inlist_sorted_state_free(sd->state);
sd->state = NULL; sd->state = NULL;
} }
if (sd->walking > 0)
{
sd->clear_me = EINA_TRUE;
return;
}
evas_event_freeze(evas_object_evas_get(sd->obj)); evas_event_freeze(evas_object_evas_get(sd->obj));
for (l = sd->items, next = l ? l->next : NULL; // Do not use EINA_INLIST_FOREACH or EINA_INLIST_FOREACH_SAFE
l; // because sd->items can be modified inside elm_widget_item_del()
l = next, next = next ? next->next : NULL) while (sd->items)
{ {
Elm_Gen_Item *it = ELM_GEN_ITEM_FROM_INLIST(l); it = EINA_INLIST_CONTAINER_GET(sd->items->last, Elm_Gen_Item);
it->item->nocache_once = EINA_TRUE;
if (it->generation < sd->generation) elm_widget_item_del(it);
{
Elm_Gen_Item *itn = NULL;
if (next) itn = ELM_GEN_ITEM_FROM_INLIST(next);
if (itn) itn->walking++; /* prevent early death of subitem */
it->del_cb(it);
elm_widget_item_free(it);
if (itn) itn->walking--;
} }
}
sd->clear_me = EINA_FALSE;
sd->pan_changed = EINA_TRUE; sd->pan_changed = EINA_TRUE;
if (!sd->queue) if (!sd->queue)
{ {
@ -5017,8 +4982,7 @@ _item_select(Elm_Gen_Item *it)
{ {
Evas_Object *obj = WIDGET(it); Evas_Object *obj = WIDGET(it);
if ((it->generation < GL_IT(it)->wsd->generation) || if ((it->decorate_it_set) ||
(it->decorate_it_set) ||
(it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || (it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
(GL_IT(it)->wsd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)) (GL_IT(it)->wsd->select_mode == ELM_OBJECT_SELECT_MODE_NONE))
return; return;
@ -5033,26 +4997,8 @@ _item_select(Elm_Gen_Item *it)
return; return;
evas_object_ref(obj); evas_object_ref(obj);
it->walking++;
GL_IT(it)->wsd->walking++;
if (it->func.func) it->func.func((void *)it->func.data, WIDGET(it), it); if (it->func.func) it->func.func((void *)it->func.data, WIDGET(it), it);
if (it->generation == GL_IT(it)->wsd->generation)
evas_object_smart_callback_call(WIDGET(it), SIG_SELECTED, it); evas_object_smart_callback_call(WIDGET(it), SIG_SELECTED, it);
it->walking--;
GL_IT(it)->wsd->walking--;
if ((GL_IT(it)->wsd->clear_me) && (!GL_IT(it)->wsd->walking))
_elm_genlist_clear(WIDGET(it), EINA_TRUE);
else
{
if ((!it->walking) && (it->generation < GL_IT(it)->wsd->generation))
{
it->del_cb(it);
elm_widget_item_free(it);
}
else
GL_IT(it)->wsd->last_selected_item = (Elm_Object_Item *)it;
}
evas_object_unref(obj); evas_object_unref(obj);
} }
@ -5092,8 +5038,6 @@ _item_disable_hook(Elm_Object_Item *item)
Evas_Object *obj; Evas_Object *obj;
Elm_Gen_Item *it = (Elm_Gen_Item *)item; Elm_Gen_Item *it = (Elm_Gen_Item *)item;
if (it->generation < GL_IT(it)->wsd->generation) return;
if (it->selected) if (it->selected)
elm_genlist_item_selected_set(item, EINA_FALSE); elm_genlist_item_selected_set(item, EINA_FALSE);
@ -5123,8 +5067,6 @@ _item_del_pre_hook(Elm_Object_Item *item)
{ {
Elm_Gen_Item *it = (Elm_Gen_Item *)item; Elm_Gen_Item *it = (Elm_Gen_Item *)item;
if (it->walking > 0)
{
// FIXME: relative will be better to be fixed. it is too harsh. // FIXME: relative will be better to be fixed. it is too harsh.
if (it->item->rel) if (it->item->rel)
it->item->rel->item->rel_revs = it->item->rel->item->rel_revs =
@ -5137,7 +5079,6 @@ _item_del_pre_hook(Elm_Object_Item *item)
elm_genlist_item_subitems_clear(item); elm_genlist_item_subitems_clear(item);
if (GL_IT(it)->wsd->show_item == it) if (GL_IT(it)->wsd->show_item == it)
GL_IT(it)->wsd->show_item = NULL; GL_IT(it)->wsd->show_item = NULL;
_elm_genlist_item_del_not_serious(it); _elm_genlist_item_del_not_serious(it);
if (it->item->block) if (it->item->block)
{ {
@ -5154,8 +5095,6 @@ _item_del_pre_hook(Elm_Object_Item *item)
eina_list_remove(it->parent->item->items, it); eina_list_remove(it->parent->item->items, it);
it->parent = NULL; it->parent = NULL;
} }
return EINA_FALSE;
}
_item_del(it); _item_del(it);
return EINA_TRUE; return EINA_TRUE;
@ -5186,7 +5125,6 @@ _elm_genlist_item_new(Elm_Genlist_Smart_Data *sd,
it = elm_widget_item_new(sd->obj, Elm_Gen_Item); it = elm_widget_item_new(sd->obj, Elm_Gen_Item);
if (!it) return NULL; if (!it) return NULL;
it->generation = sd->generation;
it->itc = itc; it->itc = itc;
elm_genlist_item_class_ref((Elm_Genlist_Item_Class *)itc); elm_genlist_item_class_ref((Elm_Genlist_Item_Class *)itc);
@ -5641,7 +5579,7 @@ elm_genlist_clear(Evas_Object *obj)
static void static void
_clear_eo(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) _clear_eo(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
{ {
_elm_genlist_clear(obj, EINA_FALSE); _elm_genlist_clear(obj);
} }
EAPI void EAPI void
@ -5846,7 +5784,7 @@ _first_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
if (!sd->items) return; if (!sd->items) return;
it = ELM_GEN_ITEM_FROM_INLIST(sd->items); it = ELM_GEN_ITEM_FROM_INLIST(sd->items);
while ((it) && (it->generation < sd->generation)) while (it)
it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next); it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
*ret = (Elm_Object_Item *)it; *ret = (Elm_Object_Item *)it;
@ -5874,7 +5812,7 @@ _last_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
if (!sd->items) return; if (!sd->items) return;
it = ELM_GEN_ITEM_FROM_INLIST(sd->items->last); it = ELM_GEN_ITEM_FROM_INLIST(sd->items->last);
while ((it) && (it->generation < sd->generation)) while (it)
it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev); it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev);
*ret = (Elm_Object_Item *)it; *ret = (Elm_Object_Item *)it;
@ -5891,7 +5829,7 @@ elm_genlist_item_next_get(const Elm_Object_Item *item)
while (it) while (it)
{ {
it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next); it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
if ((it) && (it->generation == GL_IT(it)->wsd->generation)) break; if (it) break;
} }
return (Elm_Object_Item *)it; return (Elm_Object_Item *)it;
@ -5908,7 +5846,7 @@ elm_genlist_item_prev_get(const Elm_Object_Item *item)
while (it) while (it)
{ {
it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev); it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev);
if ((it) && (it->generation == GL_IT(it)->wsd->generation)) break; if (it) break;
} }
return (Elm_Object_Item *)it; return (Elm_Object_Item *)it;
@ -5959,7 +5897,7 @@ elm_genlist_item_selected_set(Elm_Object_Item *item,
ELM_GENLIST_ITEM_CHECK_OR_RETURN(item); ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
sd = GL_IT(it)->wsd; sd = GL_IT(it)->wsd;
if ((it->generation < sd->generation) || elm_widget_item_disabled_get(it)) if (elm_widget_item_disabled_get(it))
return; return;
selected = !!selected; selected = !!selected;
if (it->selected == selected) return; if (it->selected == selected) return;
@ -6135,7 +6073,6 @@ _elm_genlist_item_coordinates_calc(Elm_Object_Item *item,
Elm_Gen_Item *it = (Elm_Gen_Item *)item; Elm_Gen_Item *it = (Elm_Gen_Item *)item;
Evas_Coord gith = 0; Evas_Coord gith = 0;
if (it->generation < GL_IT(it)->wsd->generation) return EINA_FALSE;
if (!((GL_IT(it)->wsd->homogeneous) && if (!((GL_IT(it)->wsd->homogeneous) &&
(GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS))) (GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS)))
{ {
@ -6191,7 +6128,6 @@ elm_genlist_item_promote(Elm_Object_Item *item)
ELM_GENLIST_ITEM_CHECK_OR_RETURN(item); ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
if (it->generation < GL_IT(it)->wsd->generation) return;
_item_move_before _item_move_before
(it, (Elm_Gen_Item *)elm_genlist_first_item_get(WIDGET(it))); (it, (Elm_Gen_Item *)elm_genlist_first_item_get(WIDGET(it)));
} }
@ -6202,7 +6138,6 @@ elm_genlist_item_demote(Elm_Object_Item *item)
Elm_Gen_Item *it = (Elm_Gen_Item *)item; Elm_Gen_Item *it = (Elm_Gen_Item *)item;
ELM_GENLIST_ITEM_CHECK_OR_RETURN(item); ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
if (it->generation < GL_IT(it)->wsd->generation) return;
_item_move_after(it, (Elm_Gen_Item *)elm_genlist_last_item_get(WIDGET(it))); _item_move_after(it, (Elm_Gen_Item *)elm_genlist_last_item_get(WIDGET(it)));
} }
@ -6258,7 +6193,6 @@ elm_genlist_item_update(Elm_Object_Item *item)
ELM_GENLIST_ITEM_CHECK_OR_RETURN(item); ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
if (!it->item->block) return; if (!it->item->block) return;
if (it->generation < GL_IT(it)->wsd->generation) return;
it->item->mincalcd = EINA_FALSE; it->item->mincalcd = EINA_FALSE;
it->item->updateme = EINA_TRUE; it->item->updateme = EINA_TRUE;
it->item->block->updateme = EINA_TRUE; it->item->block->updateme = EINA_TRUE;
@ -6276,7 +6210,6 @@ elm_genlist_item_fields_update(Elm_Object_Item *item,
ELM_GENLIST_ITEM_CHECK_OR_RETURN(item); ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
if (!it->item->block) return; if (!it->item->block) return;
if (it->generation < GL_IT(it)->wsd->generation) return;
if ((!itf) || (itf & ELM_GENLIST_ITEM_FIELD_TEXT)) if ((!itf) || (itf & ELM_GENLIST_ITEM_FIELD_TEXT))
{ {
@ -6338,7 +6271,6 @@ elm_genlist_item_item_class_update(Elm_Object_Item *item,
if (!it->item->block) return; if (!it->item->block) return;
EINA_SAFETY_ON_NULL_RETURN(itc); EINA_SAFETY_ON_NULL_RETURN(itc);
if (it->generation < GL_IT(it)->wsd->generation) return;
it->itc = itc; it->itc = itc;
it->item->nocache_once = EINA_TRUE; it->item->nocache_once = EINA_TRUE;
@ -6378,7 +6310,6 @@ elm_genlist_item_item_class_get(const Elm_Object_Item *item)
Elm_Gen_Item *it = (Elm_Gen_Item *)item; Elm_Gen_Item *it = (Elm_Gen_Item *)item;
ELM_GENLIST_ITEM_CHECK_OR_RETURN(item, NULL); ELM_GENLIST_ITEM_CHECK_OR_RETURN(item, NULL);
if (it->generation < GL_IT(it)->wsd->generation) return NULL;
return it->itc; return it->itc;
} }
@ -6848,8 +6779,7 @@ elm_genlist_item_decorate_mode_set(Elm_Object_Item *item,
sd = GL_IT(it)->wsd; sd = GL_IT(it)->wsd;
if (!decorate_it_type) return; if (!decorate_it_type) return;
if ((it->generation < sd->generation) || if (elm_widget_item_disabled_get(it)) return;
elm_widget_item_disabled_get(it)) return;
if (sd->decorate_all_mode) return; if (sd->decorate_all_mode) return;
if ((sd->mode_item == it) && if ((sd->mode_item == it) &&
@ -7238,7 +7168,6 @@ elm_genlist_item_select_mode_set(Elm_Object_Item *item,
ELM_GENLIST_ITEM_CHECK_OR_RETURN(item); ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
if (!it) return; if (!it) return;
if (it->generation < GL_IT(it)->wsd->generation) return;
if (mode >= ELM_OBJECT_SELECT_MODE_MAX) if (mode >= ELM_OBJECT_SELECT_MODE_MAX)
return; return;
if (it->select_mode != mode) if (it->select_mode != mode)

View File

@ -46,7 +46,6 @@ struct _Elm_Genlist_Smart_Data
* repositioned */ * repositioned */
Elm_Object_Item *last_selected_item; Elm_Object_Item *last_selected_item;
Ecore_Job *calc_job; Ecore_Job *calc_job;
int walking;
int item_width, item_height; int item_width, item_height;
int group_item_width, group_item_height; int group_item_width, group_item_height;
int minw, minh; int minw, minh;
@ -112,9 +111,6 @@ struct _Elm_Genlist_Smart_Data
* default. this can be changed by * default. this can be changed by
* elm_genlist_longpress_timeout_set() */ * elm_genlist_longpress_timeout_set() */
double longpress_timeout; double longpress_timeout;
/* a generation of genlist. when genlist is cleared, this value
* will be increased and a new generation will start */
int generation;
Eina_Compare_Cb item_compare_cb; Eina_Compare_Cb item_compare_cb;
Eina_Compare_Cb item_compare_data_cb; Eina_Compare_Cb item_compare_data_cb;
@ -160,7 +156,6 @@ struct _Elm_Genlist_Smart_Data
Eina_Bool highlight : 1; Eina_Bool highlight : 1;
/* a flag whether genlist is marked as to be cleared or not. if /* a flag whether genlist is marked as to be cleared or not. if
* this flag is true, genlist clear was already deferred. */ * this flag is true, genlist clear was already deferred. */
Eina_Bool clear_me : 1;
Eina_Bool h_bounce : 1; Eina_Bool h_bounce : 1;
Eina_Bool v_bounce : 1; Eina_Bool v_bounce : 1;
Eina_Bool bring_in : 1; /* a flag to Eina_Bool bring_in : 1; /* a flag to