+_scroll_item(Widget_Data *wd)
+{
+ Elm_Genlist_Item *it = NULL;
+ Evas_Coord gith = 0;
+ Evas_Coord ow, oh, dx = 0, dy = 0, dw = 0, dh = 0;
+
+ evas_object_geometry_get(wd->pan_smart, NULL, NULL, &ow, &oh);
+ it = wd->show_item;
+ dx = it->x + it->item->block->x;
+ dy = it->y + it->item->block->y;
+ dw = it->item->block->w;
+ dh = oh;
+ switch (wd->scrollto_type)
+ {
+ case ELM_GENLIST_ITEM_SCROLLTO_TOP:
+ if (it->item->group_item) gith = it->item->group_item->item->h;
+ dy -= gith;
+ break;
+ case ELM_GENLIST_ITEM_SCROLLTO_MIDDLE:
+ dy += (it->item->h / 2 - oh / 2);
+ break;
+ case ELM_GENLIST_ITEM_SCROLLTO_IN:
+ default:
+ if ((wd->expanded_item) &&
+ ((wd->show_item->y + wd->show_item->item->block->y + wd->show_item->item->h)
+ - (wd->expanded_item->y + wd->expanded_item->item->block->y) > oh))
+ {
+ it = wd->expanded_item;
+ if (it->item->group_item) gith = it->item->group_item->item->h;
+ dx = it->x + it->item->block->x;
+ dy = it->y + it->item->block->y - gith;
+ dw = it->item->block->w;
+ }
+ else
+ {
+ if ((it->item->group_item) && (wd->pan_y > (it->y + it->item->block->y)))
+ gith = it->item->group_item->item->h;
+ dy -= gith;
+ dh = it->item->h;
+ }
+ break;
+ }
+ if (wd->bring_in)
+ elm_smart_scroller_region_bring_in(wd->scr, dx, dy, dw, dh);
+ else
+ elm_smart_scroller_child_region_show(wd->scr, dx, dy, dw, dh);
+
+ it->item->showme = EINA_FALSE;
+ wd->show_item = NULL;
+ wd->auto_scroll_enabled = EINA_FALSE;
+ wd->check_scroll = EINA_FALSE;
+}
+
+static void