diff --git a/FL/Fl_Browser.H b/FL/Fl_Browser.H index 467c6bf0c..350dbf709 100644 --- a/FL/Fl_Browser.H +++ b/FL/Fl_Browser.H @@ -212,7 +212,7 @@ public: and used to modify how the rest of the line is printed: \li '\@.' Print rest of line, don't look for more '\@' signs - \li '\@\@' Print rest of line starting with '\@' + \li '\@\@' Doubling the format character prints the format character once, followed by the rest of line \li '\@l' Use a LARGE (24 point) font \li '\@m' Use a medium large (18 point) font \li '\@s' Use a small (11 point) font diff --git a/src/Fl_Browser.cxx b/src/Fl_Browser.cxx index 7621c6598..375d3ad33 100644 --- a/src/Fl_Browser.cxx +++ b/src/Fl_Browser.cxx @@ -378,8 +378,7 @@ int Fl_Browser::item_height(void *item) const { Fl_Font font = textfont(); // default font int tsize = textsize(); // default size if ( format_char() ) { // can be NULL - while (*str==format_char()) { - str++; + while (*str==format_char() && *str++ && *str!=format_char()) { switch (*str++) { case 'l': case 'L': tsize = 24; break; case 'm': case 'M': tsize = 18; break; @@ -391,7 +390,6 @@ int Fl_Browser::item_height(void *item) const { case 'C': while (isdigit(*str & 255)) str++; break; // skip a color number case 'F': font = (Fl_Font)strtol(str,&str,10); break; case 'S': tsize = strtol(str,&str,10); break; - case 0: case '@': str--; case '.': goto END_FORMAT; } } @@ -458,9 +456,6 @@ int Fl_Browser::item_width(void *item) const { case '.': done = 1; break; - case '@': - str--; - done = 1; } if (done) @@ -578,8 +573,6 @@ void Fl_Browser::item_draw(void* item, int X, int Y, int W, int H) const { break; case '.': goto BREAK; - case '@': - str--; goto BREAK; } } } diff --git a/test/browser.cxx b/test/browser.cxx index 48edd302b..a3485ca15 100644 --- a/test/browser.cxx +++ b/test/browser.cxx @@ -45,6 +45,9 @@ That was a blank line above this. @C2Green @C4Blue +@@ start line with '@' +@.@ alternative start line with '@' + You should try different browser types: Fl_Browser Fl_Select_Browser @@ -164,6 +167,7 @@ int main(int argc, char **argv) { browser->callback(b_cb); // browser->scrollbar_right(); //browser->has_scrollbar(Fl_Browser::BOTH_ALWAYS); + //browser->format_char('#'); if (!browser->load(fname)) { int done = 0; #ifdef _MSC_VER