X-Git-Url: https://git.pterodactylus.net/?p=fms.git;a=blobdiff_plain;f=src%2Funicode%2Funicodeformatter.cpp;fp=src%2Funicode%2Funicodeformatter.cpp;h=f017fa2d55120af6c2996e5e5111a5e64198a2d5;hp=bc6a2387ef0ff9658ab0e776e76ff08291533e88;hb=59a5414ec47a2932a7802fcd1d98c4d80166564f;hpb=4e96d123460d6363cf7274e36bd9357768eb86ad diff --git a/src/unicode/unicodeformatter.cpp b/src/unicode/unicodeformatter.cpp index bc6a238..f017fa2 100644 --- a/src/unicode/unicodeformatter.cpp +++ b/src/unicode/unicodeformatter.cpp @@ -26,33 +26,24 @@ const bool UnicodeFormatter::LineWrap(const std::string &utf8input, const int li if(ignorechars.size()==0 || wcstring.find_first_of(wcignorechars,currentpos)!=currentpos) { lastnewlinepos=wcstring.rfind(m_unicodenewline,currentpos+linelength); + whitespacepos=wcstring.find_last_of(m_unicodewhitespace,currentpos+linelength); // newline found within line length - we don't need to wrap if(lastnewlinepos!=std::wstring::npos && lastnewlinepos>=currentpos) { currentpos=lastnewlinepos+1; } - // newline doesn't exist at all - force one in - else if(lastnewlinepos==std::wstring::npos) + // whitespace found within line length - erase whitespace and insert newline + else if((lastnewlinepos=currentpos) { - wcstring.insert(currentpos+linelength,m_unicodenewline); - currentpos+=linelength+m_unicodenewline.length(); + wcstring.erase(whitespacepos,1); + wcstring.insert(whitespacepos,m_unicodenewline); + currentpos=whitespacepos+m_unicodenewline.length(); } + // whitespace or newline not found within line length - force newline at line length else { - whitespacepos=wcstring.find_last_of(m_unicodewhitespace,currentpos+linelength); - // whitespace found within line length - erase whitespace and insert newline - if(whitespacepos!=std::wstring::npos && whitespacepos>=currentpos) - { - wcstring.erase(whitespacepos,1); - wcstring.insert(whitespacepos,m_unicodenewline); - currentpos=whitespacepos+m_unicodenewline.length(); - } - // whitespace not found within line length - force newline at line length - else - { - wcstring.insert(currentpos+linelength,m_unicodenewline); - currentpos+=linelength+m_unicodenewline.length(); - } + wcstring.insert(currentpos+linelength,m_unicodenewline); + currentpos+=linelength+m_unicodenewline.length(); } } else