On Thu, 18 Apr 2013 01:43:23 +0900 Daniel Juyung Seo <[email protected]>
said:

> On Thu, Apr 18, 2013 at 1:20 AM, Rafael Antognolli
> <[email protected]>wrote:
> 
> > On Wed, Apr 17, 2013 at 1:03 PM, Daniel Juyung Seo <[email protected]>
> > wrote:
> > > This patch broke at least two stuffs:
> > >
> > > 1. item movement with key arrow
> > > now up/down arrow scrolls genlist now move to upper/lower item.
> > >
> > > 2. item del routine.
> > > item del callbacks are called twice LOL.
> > > this also broke apps that use elm_fileselector_button which uses
> > > elm_genlist internally.
> > >
> > > Please fix them as soon as possible.
> > > This is very serious.
> >
> > Revert until fixed?
> >
> 
> Well, yes. I just reverted this because it looks like TaeHwan Kim is away
> for a couple of days.
> 
> Daniel Juyung Seo (SeoZ)

nd i was just about to do the same. the patch looked sane. it compiled and
genlist seemed to work... i didnt test these bits though. good stuff daniel.
revert is right. back to bluezery to address/fix. :)

> > > On Mon, Apr 15, 2013 at 12:00 PM, Tae-Hwan Kim - Enlightenment Git <
> > > [email protected]> wrote:
> > >
> > >> raster pushed a commit to branch master.
> > >>
> > >> commit cea8e755dbf9b062bb1e6d7a89fbf4c590b8f6b3
> > >> Author: Tae-Hwan Kim <[email protected]>
> > >> Date:   Mon Apr 15 12:00:43 2013 +0900
> > >>
> > >>     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.
> > >> ---
> > >>  src/lib/elm_genlist.c        | 171
> > >> +++++++++++++------------------------------
> > >>  src/lib/elm_widget_genlist.h |   5 --
> > >>  2 files changed, 50 insertions(+), 126 deletions(-)
> > >>
> > >> diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
> > >> index d9317c3..44f1e90 100644
> > >> --- a/src/lib/elm_genlist.c
> > >> +++ b/src/lib/elm_genlist.c
> > >> @@ -1075,8 +1075,7 @@ _decorate_all_item_realize(Elm_Gen_Item *it,
> > >>     const char *stacking;
> > >>     const char *stacking_even;
> > >>
> > >> -   if ((!it) || (it->item->decorate_all_item_realized) ||
> > >> -       (it->generation < GL_IT(it)->wsd->generation))
> > >> +   if ((!it) || (it->item->decorate_all_item_realized))
> > >>       return;
> > >>
> > >>     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];
> > >>     int tsize = 20;
> > >>
> > >> -   if (it->generation < GL_IT(it)->wsd->generation) return;
> > >>     if (it->realized)
> > >>       {
> > >>          if (it->item->order_num_in != in)
> > >> @@ -1988,8 +1986,7 @@ _item_block_position(Item_Block *itb,
> > >>
> > >>     EINA_LIST_FOREACH(itb->items, l, it)
> > >>       {
> > >> -        if (it->generation < GL_IT(it)->wsd->generation) continue;
> > >> -        else if (GL_IT(it)->wsd->reorder_it == it)
> > >> +        if (GL_IT(it)->wsd->reorder_it == it)
> > >>            continue;
> > >>
> > >>          it->x = 0;
> > >> @@ -2287,7 +2284,7 @@ _item_single_select_up(Elm_Genlist_Smart_Data *sd)
> > >>     if (!sd->selected)
> > >>       {
> > >>          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);
> > >>       }
> > >>     else
> > >> @@ -2311,7 +2308,7 @@ _item_single_select_down(Elm_Genlist_Smart_Data
> > *sd)
> > >>     if (!sd->selected)
> > >>       {
> > >>          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);
> > >>       }
> > >>     else
> > >> @@ -2695,7 +2692,6 @@ _item_highlight(Elm_Gen_Item *it)
> > >>
> > >>     if ((GL_IT(it)->wsd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
> > >>         (!GL_IT(it)->wsd->highlight) ||
> > >> -       (it->generation < GL_IT(it)->wsd->generation) ||
> > >>         (it->highlighted) || elm_widget_item_disabled_get(it) ||
> > >>         (it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
> > >>         (it->item->deco_it_view) ||
> > >> @@ -2721,7 +2717,7 @@ _item_highlight(Elm_Gen_Item *it)
> > >>  static void
> > >>  _item_unhighlight(Elm_Gen_Item *it)
> > >>  {
> > >> -   if ((it->generation < GL_IT(it)->wsd->generation) ||
> > >> (!it->highlighted))
> > >> +   if (!it->highlighted)
> > >>       return;
> > >>
> > >>     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_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)
> > >>       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));
> > >>     if (it->tooltip.del_cb)
> > >>       it->tooltip.del_cb((void *)it->tooltip.data, WIDGET(it), it);
> > >> -   GL_IT(it)->wsd->walking -= it->walking;
> > >>     if (it->long_timer)
> > >>       {
> > >>          ecore_timer_del(it->long_timer);
> > >> @@ -3013,7 +3003,6 @@ _item_del(Elm_Gen_Item *it)
> > >>  static void
> > >>  _item_unselect(Elm_Gen_Item *it)
> > >>  {
> > >> -   if ((it->generation < GL_IT(it)->wsd->generation)) return;
> > >>     _item_unhighlight(it); /* unhighlight the item first */
> > >>     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);
> > >>
> > >> -   if ((it->generation < GL_IT(it)->wsd->generation) || (!it->realized)
> > >> -       || (!it->item->deco_it_view)) return;
> > >> +   if ((!it->realized) || (!it->item->deco_it_view)) return;
> > >>
> > >>     evas_event_freeze(te);
> > >>     it->item->nocache_once = EINA_FALSE;
> > >> @@ -4375,7 +4363,6 @@ _item_block_recalc(Item_Block *itb,
> > >>     itb->num = in;
> > >>     EINA_LIST_FOREACH(itb->items, l, it)
> > >>       {
> > >> -        if (it->generation < GL_IT(it)->wsd->generation) continue;
> > >>          show_me |= it->item->show_me;
> > >>          if (!itb->realized)
> > >>            {
> > >> @@ -4609,8 +4596,7 @@ _decorate_item_realize(Elm_Gen_Item *it)
> > >>     char buf[1024];
> > >>     Evas_Object *obj = (GL_IT(it)->wsd)->obj;
> > >>
> > >> -   if ((it->item->deco_it_view) || (it->generation <
> > >> -                                    GL_IT(it)->wsd->generation))
> > return;
> > >> +   if (it->item->deco_it_view) return;
> > >>
> > >>     evas_event_freeze(evas_object_evas_get(obj));
> > >>     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_on_show_region_hook_set(obj, _show_region_hook, NULL);
> > >>
> > >> -   priv->generation = 1;
> > >> -
> > >>     if (!elm_layout_theme_set
> > >>         (obj, "genlist", "base", elm_widget_style_get(obj)))
> > >>       CRITICAL("Failed to set layout!");
> > >> @@ -4943,46 +4927,27 @@ _clear(Elm_Genlist_Smart_Data *sd)
> > >>  }
> > >>
> > >>  static void
> > >> -_elm_genlist_clear(Evas_Object *obj,
> > >> -                   Eina_Bool standby)
> > >> +_elm_genlist_clear(Evas_Object *obj)
> > >>  {
> > >> -   Eina_Inlist *next, *l;
> > >> +   Elm_Gen_Item *it;
> > >>
> > >>     ELM_GENLIST_DATA_GET(obj, sd);
> > >>
> > >> -   if (!standby) sd->generation++;
> > >> -
> > >>     if (sd->state)
> > >>       {
> > >>          eina_inlist_sorted_state_free(sd->state);
> > >>          sd->state = NULL;
> > >>       }
> > >>
> > >> -   if (sd->walking > 0)
> > >> -     {
> > >> -        sd->clear_me = EINA_TRUE;
> > >> -        return;
> > >> -     }
> > >> -
> > >>     evas_event_freeze(evas_object_evas_get(sd->obj));
> > >> -   for (l = sd->items, next = l ? l->next : NULL;
> > >> -        l;
> > >> -        l = next, next = next ? next->next : NULL)
> > >> +   // Do not use EINA_INLIST_FOREACH or EINA_INLIST_FOREACH_SAFE
> > >> +   // because sd->items can be modified inside elm_widget_item_del()
> > >> +   while (sd->items)
> > >>       {
> > >> -        Elm_Gen_Item *it = ELM_GEN_ITEM_FROM_INLIST(l);
> > >> -
> > >> -        if (it->generation < sd->generation)
> > >> -          {
> > >> -             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--;
> > >> -          }
> > >> +        it = EINA_INLIST_CONTAINER_GET(sd->items->last, Elm_Gen_Item);
> > >> +        it->item->nocache_once = EINA_TRUE;
> > >> +        elm_widget_item_del(it);
> > >>       }
> > >> -   sd->clear_me = EINA_FALSE;
> > >>     sd->pan_changed = EINA_TRUE;
> > >>     if (!sd->queue)
> > >>       {
> > >> @@ -5017,8 +4982,7 @@ _item_select(Elm_Gen_Item *it)
> > >>  {
> > >>     Evas_Object *obj = WIDGET(it);
> > >>
> > >> -   if ((it->generation < GL_IT(it)->wsd->generation) ||
> > >> -       (it->decorate_it_set) ||
> > >> +   if ((it->decorate_it_set) ||
> > >>         (it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
> > >>         (GL_IT(it)->wsd->select_mode == ELM_OBJECT_SELECT_MODE_NONE))
> > >>       return;
> > >> @@ -5033,26 +4997,8 @@ _item_select(Elm_Gen_Item *it)
> > >>       return;
> > >>
> > >>     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->generation == GL_IT(it)->wsd->generation)
> > >> -     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_smart_callback_call(WIDGET(it), SIG_SELECTED, it);
> > >>     evas_object_unref(obj);
> > >>  }
> > >>
> > >> @@ -5092,8 +5038,6 @@ _item_disable_hook(Elm_Object_Item *item)
> > >>     Evas_Object *obj;
> > >>     Elm_Gen_Item *it = (Elm_Gen_Item *)item;
> > >>
> > >> -   if (it->generation < GL_IT(it)->wsd->generation) return;
> > >> -
> > >>     if (it->selected)
> > >>       elm_genlist_item_selected_set(item, EINA_FALSE);
> > >>
> > >> @@ -5123,38 +5067,33 @@ _item_del_pre_hook(Elm_Object_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.
> > >> +   if (it->item->rel)
> > >> +      it->item->rel->item->rel_revs =
> > >> +         eina_list_remove(it->item->rel->item->rel_revs, it);
> > >> +   if (it->item->rel_revs)
> > >> +      {
> > >> +        Elm_Gen_Item *tmp;
> > >> +        EINA_LIST_FREE(it->item->rel_revs, tmp) tmp->item->rel = NULL;
> > >> +      }
> > >> +   elm_genlist_item_subitems_clear(item);
> > >> +   if (GL_IT(it)->wsd->show_item == it)
> > >> +      GL_IT(it)->wsd->show_item = NULL;
> > >> +   _elm_genlist_item_del_not_serious(it);
> > >> +   if (it->item->block)
> > >>       {
> > >> -     // FIXME: relative will be better to be fixed. it is too harsh.
> > >> -      if (it->item->rel)
> > >> -        it->item->rel->item->rel_revs =
> > >> -          eina_list_remove(it->item->rel->item->rel_revs, it);
> > >> -      if (it->item->rel_revs)
> > >> -         {
> > >> -           Elm_Gen_Item *tmp;
> > >> -           EINA_LIST_FREE(it->item->rel_revs, tmp) tmp->item->rel =
> > NULL;
> > >> -         }
> > >> -        elm_genlist_item_subitems_clear(item);
> > >> -        if (GL_IT(it)->wsd->show_item == it)
> > >> -          GL_IT(it)->wsd->show_item = NULL;
> > >> -
> > >> -        _elm_genlist_item_del_not_serious(it);
> > >> -        if (it->item->block)
> > >> -          {
> > >> -             if (it->realized) _elm_genlist_item_unrealize(it,
> > >> EINA_FALSE);
> > >> -             it->item->block->changed = EINA_TRUE;
> > >> -             if (GL_IT(it)->wsd->calc_job)
> > >> -               ecore_job_del(GL_IT(it)->wsd->calc_job);
> > >> -             GL_IT(it)->wsd->calc_job =
> > >> -               ecore_job_add(_calc_job, GL_IT(it)->wsd);
> > >> -          }
> > >> -        if (it->parent)
> > >> -          {
> > >> -             it->parent->item->items =
> > >> -               eina_list_remove(it->parent->item->items, it);
> > >> -             it->parent = NULL;
> > >> -          }
> > >> -        return EINA_FALSE;
> > >> +        if (it->realized) _elm_genlist_item_unrealize(it, EINA_FALSE);
> > >> +        it->item->block->changed = EINA_TRUE;
> > >> +        if (GL_IT(it)->wsd->calc_job)
> > >> +           ecore_job_del(GL_IT(it)->wsd->calc_job);
> > >> +        GL_IT(it)->wsd->calc_job =
> > >> +           ecore_job_add(_calc_job, GL_IT(it)->wsd);
> > >> +     }
> > >> +   if (it->parent)
> > >> +     {
> > >> +        it->parent->item->items =
> > >> +           eina_list_remove(it->parent->item->items, it);
> > >> +        it->parent = NULL;
> > >>       }
> > >>
> > >>     _item_del(it);
> > >> @@ -5186,7 +5125,6 @@ _elm_genlist_item_new(Elm_Genlist_Smart_Data *sd,
> > >>     it = elm_widget_item_new(sd->obj, Elm_Gen_Item);
> > >>     if (!it) return NULL;
> > >>
> > >> -   it->generation = sd->generation;
> > >>     it->itc = itc;
> > >>     elm_genlist_item_class_ref((Elm_Genlist_Item_Class *)itc);
> > >>
> > >> @@ -5641,7 +5579,7 @@ elm_genlist_clear(Evas_Object *obj)
> > >>  static void
> > >>  _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
> > >> @@ -5846,7 +5784,7 @@ _first_item_get(Eo *obj EINA_UNUSED, void *_pd,
> > >> va_list *list)
> > >>     if (!sd->items) return;
> > >>
> > >>     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);
> > >>
> > >>     *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;
> > >>
> > >>     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);
> > >>
> > >>     *ret = (Elm_Object_Item *)it;
> > >> @@ -5891,7 +5829,7 @@ elm_genlist_item_next_get(const Elm_Object_Item
> > >> *item)
> > >>     while (it)
> > >>       {
> > >>          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;
> > >> @@ -5908,7 +5846,7 @@ elm_genlist_item_prev_get(const Elm_Object_Item
> > >> *item)
> > >>     while (it)
> > >>       {
> > >>          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;
> > >> @@ -5959,7 +5897,7 @@ elm_genlist_item_selected_set(Elm_Object_Item
> > *item,
> > >>     ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
> > >>
> > >>     sd = GL_IT(it)->wsd;
> > >> -   if ((it->generation < sd->generation) ||
> > >> elm_widget_item_disabled_get(it))
> > >> +   if (elm_widget_item_disabled_get(it))
> > >>       return;
> > >>     selected = !!selected;
> > >>     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;
> > >>     Evas_Coord gith = 0;
> > >>
> > >> -   if (it->generation < GL_IT(it)->wsd->generation) return EINA_FALSE;
> > >>     if (!((GL_IT(it)->wsd->homogeneous) &&
> > >>           (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);
> > >>
> > >> -   if (it->generation < GL_IT(it)->wsd->generation) return;
> > >>     _item_move_before
> > >>       (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_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)));
> > >>  }
> > >>
> > >> @@ -6258,7 +6193,6 @@ elm_genlist_item_update(Elm_Object_Item *item)
> > >>     ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
> > >>
> > >>     if (!it->item->block) return;
> > >> -   if (it->generation < GL_IT(it)->wsd->generation) return;
> > >>     it->item->mincalcd = EINA_FALSE;
> > >>     it->item->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);
> > >>
> > >>     if (!it->item->block) return;
> > >> -   if (it->generation < GL_IT(it)->wsd->generation) return;
> > >>
> > >>     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;
> > >>     EINA_SAFETY_ON_NULL_RETURN(itc);
> > >> -   if (it->generation < GL_IT(it)->wsd->generation) return;
> > >>     it->itc = itc;
> > >>     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_GENLIST_ITEM_CHECK_OR_RETURN(item, NULL);
> > >> -   if (it->generation < GL_IT(it)->wsd->generation) return NULL;
> > >>
> > >>     return it->itc;
> > >>  }
> > >> @@ -6848,8 +6779,7 @@ elm_genlist_item_decorate_mode_set(Elm_Object_Item
> > >> *item,
> > >>     sd = GL_IT(it)->wsd;
> > >>
> > >>     if (!decorate_it_type) return;
> > >> -   if ((it->generation < sd->generation) ||
> > >> -       elm_widget_item_disabled_get(it)) return;
> > >> +   if (elm_widget_item_disabled_get(it)) return;
> > >>     if (sd->decorate_all_mode) return;
> > >>
> > >>     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);
> > >>     if (!it) return;
> > >> -   if (it->generation < GL_IT(it)->wsd->generation) return;
> > >>     if (mode >= ELM_OBJECT_SELECT_MODE_MAX)
> > >>       return;
> > >>     if (it->select_mode != mode)
> > >> diff --git a/src/lib/elm_widget_genlist.h b/src/lib/elm_widget_genlist.h
> > >> index e27a74e..fadb71d 100644
> > >> --- a/src/lib/elm_widget_genlist.h
> > >> +++ b/src/lib/elm_widget_genlist.h
> > >> @@ -46,7 +46,6 @@ struct _Elm_Genlist_Smart_Data
> > >>                                                       * repositioned */
> > >>     Elm_Object_Item                      *last_selected_item;
> > >>     Ecore_Job                            *calc_job;
> > >> -   int                                   walking;
> > >>     int                                   item_width, item_height;
> > >>     int                                   group_item_width,
> > >> group_item_height;
> > >>     int                                   minw, minh;
> > >> @@ -112,9 +111,6 @@ struct _Elm_Genlist_Smart_Data
> > >>      * default. this can be changed by
> > >>      * elm_genlist_longpress_timeout_set() */
> > >>     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_data_cb;
> > >>
> > >> @@ -160,7 +156,6 @@ struct _Elm_Genlist_Smart_Data
> > >>     Eina_Bool                             highlight : 1;
> > >>     /* a flag whether genlist is marked as to be cleared or not. if
> > >>      * this flag is true, genlist clear was already deferred.  */
> > >> -   Eina_Bool                             clear_me : 1;
> > >>     Eina_Bool                             h_bounce : 1;
> > >>     Eina_Bool                             v_bounce : 1;
> > >>     Eina_Bool                             bring_in : 1; /* a flag to
> > >>
> > >> --
> > >>
> > >>
> > >>
> > ------------------------------------------------------------------------------
> > >> Precog is a next-generation analytics platform capable of advanced
> > >> analytics on semi-structured data. The platform includes APIs for
> > building
> > >> apps and a phenomenal toolset for data science. Developers can use
> > >> our toolset for easy data analysis & visualization. Get a free account!
> > >> http://www2.precog.com/precogplatform/slashdotnewsletter
> > >>
> > >
> > ------------------------------------------------------------------------------
> > > Precog is a next-generation analytics platform capable of advanced
> > > analytics on semi-structured data. The platform includes APIs for
> > building
> > > apps and a phenomenal toolset for data science. Developers can use
> > > our toolset for easy data analysis & visualization. Get a free account!
> > > http://www2.precog.com/precogplatform/slashdotnewsletter
> > > _______________________________________________
> > > enlightenment-devel mailing list
> > > [email protected]
> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
> >
> >
> > --
> > Rafael Antognolli
> > http://antognolli.org/
> >
> >
> > ------------------------------------------------------------------------------
> > Precog is a next-generation analytics platform capable of advanced
> > analytics on semi-structured data. The platform includes APIs for building
> > apps and a phenomenal toolset for data science. Developers can use
> > our toolset for easy data analysis & visualization. Get a free account!
> > http://www2.precog.com/precogplatform/slashdotnewsletter
> > _______________________________________________
> > enlightenment-devel mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
> ------------------------------------------------------------------------------
> Precog is a next-generation analytics platform capable of advanced
> analytics on semi-structured data. The platform includes APIs for building
> apps and a phenomenal toolset for data science. Developers can use
> our toolset for easy data analysis & visualization. Get a free account!
> http://www2.precog.com/precogplatform/slashdotnewsletter
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    [email protected]


------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to