diff --git a/Common/Data/Text/WrapText.cpp b/Common/Data/Text/WrapText.cpp index 312047a8b3..6832389695 100644 --- a/Common/Data/Text/WrapText.cpp +++ b/Common/Data/Text/WrapText.cpp @@ -98,6 +98,9 @@ bool WordWrapper::WrapBeforeWord() { if (x_ + wordWidth_ > maxW_ && !hasEllipsis) { AddEllipsis(); skipNextWord_ = true; + if ((flags_ & FLAG_WRAP_TEXT) == 0) { + scanForNewline_ = true; + } } } return false; @@ -250,6 +253,9 @@ void WordWrapper::Wrap() { AppendWord(lastEllipsisIndex_, -1, false); AddEllipsis(); skipNextWord_ = true; + if ((flags_ & FLAG_WRAP_TEXT) == 0) { + scanForNewline_ = true; + } continue; } @@ -281,6 +287,9 @@ void WordWrapper::Wrap() { AddEllipsis(); forceEarlyWrap_ = false; skipNextWord_ = true; + if ((flags_ & FLAG_WRAP_TEXT) == 0) { + scanForNewline_ = true; + } continue; } } diff --git a/unittest/UnitTest.cpp b/unittest/UnitTest.cpp index b0e8a71bd0..757b0e281b 100644 --- a/unittest/UnitTest.cpp +++ b/unittest/UnitTest.cpp @@ -712,6 +712,12 @@ static bool TestWrapText() { EXPECT_WORDWRAP_EQ_STR("Hello goodbye", 14, FLAG_ELLIPSIZE_TEXT, "Hello..."); EXPECT_WORDWRAP_EQ_STR("Hello goodbye", 14, FLAG_WRAP_TEXT | FLAG_ELLIPSIZE_TEXT, "Hello \ngoodbye"); + // Multiple words with something short after... + EXPECT_WORDWRAP_EQ_STR("Hello goodbye yes", 14, 0, "Hello goodbye "); + EXPECT_WORDWRAP_EQ_STR("Hello goodbye yes", 14, FLAG_WRAP_TEXT, "Hello \ngoodbye \nyes"); + EXPECT_WORDWRAP_EQ_STR("Hello goodbye yes", 14, FLAG_ELLIPSIZE_TEXT, "Hello..."); + EXPECT_WORDWRAP_EQ_STR("Hello goodbye yes", 14, FLAG_WRAP_TEXT | FLAG_ELLIPSIZE_TEXT, "Hello \ngoodbye \nyes"); + // Now, multiple words, but only the first fits. EXPECT_WORDWRAP_EQ_STR("Hello goodbye", 10, 0, "Hello "); EXPECT_WORDWRAP_EQ_STR("Hello goodbye", 10, FLAG_WRAP_TEXT, "Hello \ngoodb\nye");