}
}
-void Entry::rebuild_special(const Part &part, CachedPart &cache)
+void Entry::rebuild_special(const Part &part)
{
if(part.get_name()=="text")
- text.build(part, geom, first_row, cache);
+ text.build(part, geom, first_row, part_cache);
else if(part.get_name()=="cursor")
{
const Graphic *graphic = part.get_graphic(state);
- if(!text_part || !graphic)
- {
- cache.texture = 0;
+ if(!text_part || !graphic || !graphic->get_texture())
return;
- }
unsigned row, col;
text.offset_to_coords(edit_pos, row, col);
if(row<first_row || row>=first_row+visible_rows)
- {
- cache.texture = 0;
return;
- }
Geometry rgeom = text.coords_to_geometry(*text_part, geom, first_row, row, col);
- cache.texture = graphic->get_texture();
- cache.clear_mesh();
-
- GL::MeshBuilder bld(*cache.mesh);
+ GL::MeshBuilder bld(part_cache.create_mesh(part, *graphic->get_texture()));
bld.matrix() *= GL::Matrix::translation(rgeom.x, rgeom.y, 0);
graphic->build(part.get_geometry().w, part.get_geometry().h, bld);
}
+ else
+ Widget::rebuild_special(part);
}
void Entry::render_special(const Part &part, GL::Renderer &renderer) const