diff options
| author | Bill Spitzak <spitzak@gmail.com> | 1999-03-07 08:51:44 +0000 |
|---|---|---|
| committer | Bill Spitzak <spitzak@gmail.com> | 1999-03-07 08:51:44 +0000 |
| commit | 51d37642ba4f9071ac178328cec7d421d4724187 (patch) | |
| tree | 6ac5e6ad6e0b210b2b8bf32168752787bdb46db4 /src/Fl_Browser.cxx | |
| parent | 6c793587e3305a4de1a080bb5663a356392c1075 (diff) | |
Contributed code for more accurate item_height() in Fl_Browser.
Fixed display of Fl_Choice yet again
Tried to remove warning egcs warning messages from Fl_Color_Chooser
Fl_Value_Input updates without user having to type Enter
git-svn-id: file:///fltk/svn/fltk/trunk@374 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Browser.cxx')
| -rw-r--r-- | src/Fl_Browser.cxx | 48 |
1 files changed, 39 insertions, 9 deletions
diff --git a/src/Fl_Browser.cxx b/src/Fl_Browser.cxx index 0d85a22d1..4a7fef20e 100644 --- a/src/Fl_Browser.cxx +++ b/src/Fl_Browser.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Browser.cxx,v 1.7 1999/01/30 00:39:28 carl Exp $" +// "$Id: Fl_Browser.cxx,v 1.8 1999/03/07 08:51:41 bill Exp $" // // Browser widget for the Fast Light Tool Kit (FLTK). // @@ -206,13 +206,43 @@ int Fl_Browser::item_height(void* lv) const { FL_BLINE* l = (FL_BLINE*)lv; if (l->flags & NOTDISPLAYED) return 0; char* str = l->txt; - int t = textsize()+2; - if (*str == format_char()) switch (*(str+1)) { - case 'l': case 'L': t = 26; break; - case 'm': case 'M': t = 20; break; - case 's': case 'S': t = 13; break; + Fl_Font font; + int size; + int w, h; + int hmax = 0; + + for(;*str;str++) + { + w = 0; // no wrap + font = Fl_Font(0); // default font + size = textsize(); // default size + while(*str==format_char()) + { + str++; + switch (*str++) { + case 'l': case 'L': size = 24; break; + case 'm': case 'M': size = 18; break; + case 's': size = 11; break; + case 'b': font = (Fl_Font)(font|FL_BOLD); break; + case 'i': font = (Fl_Font)(font|FL_ITALIC); break; + case 'f': case 't': font = FL_COURIER; break; + case 'S': size = strtol(str,&str,10); break; + case 'F': font = (Fl_Font)strtol(str,&str,10); break; + case 0: case '@': str--; + case '.': goto END_FORMAT; + } + } + END_FORMAT: + char* ptr = str; + for(;*str && (*str!=column_char());str++) ; + char prev = *str; + *str = 0; + fl_font(font,size); + fl_measure(ptr,w,h); + *str = prev; + if(h>hmax) hmax=h; } - return t; + return hmax+2; } int Fl_Browser::item_width(void* v) const { @@ -334,7 +364,7 @@ void Fl_Browser::item_draw(void* v, int x, int y, int w, int h) const { if (((FL_BLINE*)v)->flags & SELECTED) lcol = contrast(lcol, selection_color()); fl_color(lcol); - fl_draw(str, x+3, y, w1-6, h, align); + fl_draw(str, x+3, y, w1-6, h, e ? Fl_Align(align|FL_ALIGN_CLIP) : align); if (!e) break; // no more fields... *e = column_char(); // put the seperator back x += w1; @@ -451,5 +481,5 @@ int Fl_Browser::value() const { } // -// End of "$Id: Fl_Browser.cxx,v 1.7 1999/01/30 00:39:28 carl Exp $". +// End of "$Id: Fl_Browser.cxx,v 1.8 1999/03/07 08:51:41 bill Exp $". // |
