]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/entry.cpp
Add properties to Entry for specifying autosize dimensions
[libs/gltk.git] / source / entry.cpp
index 8aee0cf4962ee3ed6a4994a045c622a4631d153a..da127022a84b93b3e26ebd22a2dbc04c689b100a 100644 (file)
@@ -16,6 +16,8 @@ namespace GLtk {
 Entry::Entry(const string &t):
        text(),
        multiline(false),
+       edit_width(10),
+       edit_height(1),
        edit_pos(0),
        first_row(0),
        visible_rows(1),
@@ -38,13 +40,13 @@ void Entry::autosize()
                const Sides &margin = text_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, 10*en_width+margin.left+margin.right);
+               geom.w = max(geom.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*2+margin.top+margin.bottom);
+                       geom.h = max(geom.h, line_height+line_spacing*(edit_height-1)+margin.top+margin.bottom);
                }
                else
                        geom.h = max(geom.h, line_height+margin.top+margin.bottom);
@@ -88,6 +90,13 @@ void Entry::set_text(const string &t)
        rebuild();
 }
 
+void Entry::set_edit_size(unsigned w, unsigned h)
+{
+       edit_width = w;
+       edit_height = h;
+       signal_autosize_changed.emit();
+}
+
 void Entry::set_multiline(bool m)
 {
        multiline = m;