From 8709753e1b9d3292a2dbf2bebde38777ea1eef71 Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Sat, 1 Oct 2011 15:42:39 +0000 Subject: [PATCH] STR 2701: more tolerant Xft Font Attribute interpretation. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@9108 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_Text_Display.cxx | 10 +++++++++- src/fl_set_fonts_xft.cxx | 14 ++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/Fl_Text_Display.cxx b/src/Fl_Text_Display.cxx index 3955f196b..c1ce82a05 100644 --- a/src/Fl_Text_Display.cxx +++ b/src/Fl_Text_Display.cxx @@ -1371,7 +1371,11 @@ void Fl_Text_Display::previous_word() { \brief This is called before any characters are deleted. Callback attached to the text buffer to receive delete information before - the modifications are actually made. + the modifications are actually made. + + This callback can be used to adjust + the display or update other setting. It is not advisable to change any + buffers or text in this callback, or line counting may get out of sync. \param pos starting index of deletion \param nDeleted number of bytes we will delete (must be UTF-8 aligned!) @@ -1402,6 +1406,10 @@ void Fl_Text_Display::buffer_predelete_cb(int pos, int nDeleted, void *cbArg) { Callback attached to the text buffer to receive modification information + This callback can be used to adjust + the display or update other setting. It is not advisable to change any + buffers or text in this callback, or line counting may get out of sync. + \param pos starting index of modification \param nInserted number of bytes we inserted (must be UTF-8 aligned!) \param nDeleted number of bytes deleted (must be UTF-8 aligned!) diff --git a/src/fl_set_fonts_xft.cxx b/src/fl_set_fonts_xft.cxx index 508640762..fcb217673 100644 --- a/src/fl_set_fonts_xft.cxx +++ b/src/fl_set_fonts_xft.cxx @@ -122,7 +122,7 @@ static void make_raw_name(char *raw, char *pretty) while ((style) && (style < last)) { int type; - while ((*style == '=') || (*style == ' ') || (*style == '\t')) + while ((*style == '=') || (*style == ' ') || (*style == '\t') || (*style == ',')) { style++; // Start of Style string if ((style >= last) || (*style == 0)) continue; @@ -165,7 +165,7 @@ static void make_raw_name(char *raw, char *pretty) goto NEXT_STYLE; } // switch end NEXT_STYLE: - while ((*style != ' ') && (*style != '\t')) + while ((*style != ' ') && (*style != '\t') && (*style != ',')) { style++; if ((style >= last) || (*style == 0)) goto STYLE_DONE; @@ -276,10 +276,12 @@ Fl_Font Fl::set_fonts(const char* pattern_name) first = (char *)font; // name is just what was returned } // Truncate the name after the (english) modifiers description - if (stop) - { - *stop = 0; // Terminate the string at the first comma, if there is one - } + // Matt: Actually, there is no guarantee that the *first* description is the English one. + // Matt: So we keep the entire description, just in case. + //if (stop) + //{ + // *stop = 0; // Terminate the string at the first comma, if there is one + //} // Copy the font description into our list if (first == (char *)font)