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