set_text(t);
}
-void Entry::autosize()
+void Entry::autosize_special(const Part &part, Geometry &ageom)
{
- if(!style)
- return;
-
- Widget::autosize();
-
- if(text_part)
+ if(part.get_name()=="text")
{
- const Sides &margin = text_part->get_margin();
+ const Sides &margin = part.get_margin();
const GL::Font &font = style->get_font();
unsigned en_width = static_cast<unsigned>(font.get_string_width("n")*style->get_font_size());
- geom.w = max(geom.w, edit_width*en_width+margin.left+margin.right);
+ ageom.w = max(ageom.w, edit_width*en_width+margin.left+margin.right);
unsigned line_height = static_cast<unsigned>((font.get_ascent()-font.get_descent())*style->get_font_size());
if(multiline)
{
unsigned line_spacing = style->get_font_size()*6/5;
- geom.h = max(geom.h, line_height+line_spacing*(edit_height-1)+margin.top+margin.bottom);
+ ageom.h = max(ageom.h, line_height+line_spacing*(edit_height-1)+margin.top+margin.bottom);
}
else
- geom.h = max(geom.h, line_height+margin.top+margin.bottom);
+ ageom.h = max(ageom.h, line_height+margin.top+margin.bottom);
}
-
- if(multiline)
+ else if(part.get_name()=="slider" && multiline)
{
- if(const Part *slider_part = style->get_part("slider"))
+ Geometry sgeom = part.get_geometry();
+ if(!sgeom.w || !sgeom.h)
{
- Geometry sgeom = slider_part->get_geometry();
- if(!sgeom.w || !sgeom.h)
- {
- slider->autosize();
- if(!sgeom.w)
- sgeom.w = slider->get_geometry().w;
- if(!sgeom.h)
- sgeom.h = slider->get_geometry().h;
- }
-
- const Sides &margin = slider_part->get_margin();
- geom.w = max(geom.w, sgeom.w+margin.left+margin.right);
- geom.h = max(geom.h, sgeom.h+margin.top+margin.bottom);
-
- reposition_slider();
+ slider->autosize();
+ if(!sgeom.w)
+ sgeom.w = slider->get_geometry().w;
+ if(!sgeom.h)
+ sgeom.h = slider->get_geometry().h;
}
- check_view_range();
+ const Sides &margin = part.get_margin();
+ ageom.w = max(ageom.w, sgeom.w+margin.left+margin.right);
+ ageom.h = max(ageom.h, sgeom.h+margin.top+margin.bottom);
}
-
- rebuild();
}
void Entry::set_text(const string &t)