- const Sides &margin = part.get_margin();
- Geometry pgeom = geom;
- pgeom.h = row_height+margin.top+margin.bottom;
-
- GL::PushMatrix push_mtx;
- GL::translate(0, geom.h-pgeom.h, 0);
-
- for(unsigned i=0; (i<n_visible && first+i<items.size()); ++i)
- {
- if(i!=0)
- GL::translate(0, -static_cast<int>(row_height), 0);
- Text(*style, items[first+i]).render(part, pgeom);
- }
- }
- else if(part.get_name()=="selection")
- {
- if(sel_index>=static_cast<int>(first) && sel_index<static_cast<int>(first+n_visible))
- {
- const Sides &margin = part.get_margin();
-
- Geometry pgeom = geom;
- pgeom.h = row_height;
- pgeom.w -= margin.left+margin.right;
-
- Geometry rgeom = part.get_geometry();
- rgeom.y += geom.h-margin.top-row_height*(sel_index-first+1);
- rgeom.x += margin.left;
- part.get_alignment().apply(rgeom, pgeom);
-
- GL::push_matrix();
- GL::translate(rgeom.x, rgeom.y, 0);
- part.get_graphic(state)->render(rgeom.w, rgeom.h);
- GL::pop_matrix();
- }