diff --git a/legacy/elementary/ChangeLog b/legacy/elementary/ChangeLog index 94be09ffe5..3813d2324d 100644 --- a/legacy/elementary/ChangeLog +++ b/legacy/elementary/ChangeLog @@ -115,3 +115,7 @@ * Made elm_object_focus_set() fall back to evbas_object_focus_set() if the object is not an elm widget. +2012-05-29 Mike Blumenkrantz + + * Prepending items to a genlist no longer causes the selected item to + scroll out of the viewport diff --git a/legacy/elementary/src/lib/elm_genlist.c b/legacy/elementary/src/lib/elm_genlist.c index 48fab79bf1..15a2e8e490 100644 --- a/legacy/elementary/src/lib/elm_genlist.c +++ b/legacy/elementary/src/lib/elm_genlist.c @@ -4116,6 +4116,18 @@ _item_process_post(Widget_Data *wd, Elm_Gen_Item *it, Eina_Bool qadd) } } if (showme) it->item->block->showme = EINA_TRUE; + /* when prepending, move the scroller along with the first selected item to + * create the illusion that we're watching the selected item + * this prevents the selected item being scrolled off the viewport + */ + if (wd->selected && it->item->before) + { + int y, h; + it = wd->selected->data; + elm_smart_scroller_child_pos_get(wd->scr, NULL, &y); + evas_object_geometry_get(wd->pan_smart, NULL, NULL, NULL, &h); + elm_smart_scroller_child_region_show(wd->scr, it->x + it->item->block->x, y + it->item->h, it->item->block->w, h); + } } static int