genlist - fix show item if list manipulation changes shown item position

this fixes T38 - it's a bit brute force but the only way i can think
of that is not too invasive before release.
This commit is contained in:
Carsten Haitzler 2013-11-28 16:36:55 +09:00
parent 5430b76096
commit f6b66cc1d3
1 changed files with 6 additions and 3 deletions

View File

@ -3137,6 +3137,7 @@ _item_del(Elm_Gen_Item *it)
elm_genlist_item_class_unref((Elm_Genlist_Item_Class *)it->itc);
evas_event_thaw(evas_object_evas_get(obj));
evas_event_thaw_eval(evas_object_evas_get(obj));
if (!sd->queue) _item_scroll(sd);
}
static void
@ -3959,6 +3960,7 @@ _queue_process(Elm_Genlist_Smart_Data *sd)
if ((t - t0) > (ecore_animator_frametime_get())) break;
}
}
if (!sd->queue) _item_scroll(sd);
return n;
}
@ -6302,10 +6304,11 @@ _elm_genlist_item_coordinates_calc(Elm_Object_Item *item,
ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
if (it->generation < sd->generation) return EINA_FALSE;
if (!((sd->homogeneous) &&
(sd->mode == ELM_LIST_COMPRESS)))
if ((sd->queue) ||
(!((sd->homogeneous) &&
(sd->mode == ELM_LIST_COMPRESS))))
{
if ((it->item->queued) || (!it->item->mincalcd))
if ((it->item->queued) || (!it->item->mincalcd) || (sd->queue))
{
sd->show_item = it;
sd->bring_in = bring_in;