From 68df09cf4755f2d5ee4c015f1f8fc8f2bb122645 Mon Sep 17 00:00:00 2001 From: ocornut Date: Sun, 1 Jan 2017 20:11:40 +0100 Subject: [PATCH] Fixed word-wrapping which would never wrap after a 1 character word. (thanks @sronsse) --- imgui_demo.cpp | 4 ++-- imgui_draw.cpp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/imgui_demo.cpp b/imgui_demo.cpp index d42d1486..e9b5da51 100644 --- a/imgui_demo.cpp +++ b/imgui_demo.cpp @@ -362,7 +362,7 @@ void ImGui::ShowTestWindow(bool* p_open) ImVec2 pos = ImGui::GetCursorScreenPos(); ImGui::GetWindowDrawList()->AddRectFilled(ImVec2(pos.x + wrap_width, pos.y), ImVec2(pos.x + wrap_width + 10, pos.y + ImGui::GetTextLineHeight()), IM_COL32(255,0,255,255)); ImGui::PushTextWrapPos(ImGui::GetCursorPos().x + wrap_width); - ImGui::Text("lazy dog. This paragraph is made to fit within %.0f pixels. The quick brown fox jumps over the lazy dog.", wrap_width); + ImGui::Text("The lazy dog is a good dog. This paragraph is made to fit within %.0f pixels. Testing a 1 character word. The quick brown fox jumps over the lazy dog.", wrap_width); ImGui::GetWindowDrawList()->AddRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax(), IM_COL32(255,255,0,255)); ImGui::PopTextWrapPos(); @@ -370,7 +370,7 @@ void ImGui::ShowTestWindow(bool* p_open) pos = ImGui::GetCursorScreenPos(); ImGui::GetWindowDrawList()->AddRectFilled(ImVec2(pos.x + wrap_width, pos.y), ImVec2(pos.x + wrap_width + 10, pos.y + ImGui::GetTextLineHeight()), IM_COL32(255,0,255,255)); ImGui::PushTextWrapPos(ImGui::GetCursorPos().x + wrap_width); - ImGui::Text("aaaaaaaa bbbbbbbb, cccccccc,dddddddd. eeeeeeee ffffffff. gggggggg!hhhhhhhh"); + ImGui::Text("aaaaaaaa bbbbbbbb, c cccccccc,dddddddd. d eeeeeeee ffffffff. gggggggg!hhhhhhhh"); ImGui::GetWindowDrawList()->AddRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax(), IM_COL32(255,255,0,255)); ImGui::PopTextWrapPos(); diff --git a/imgui_draw.cpp b/imgui_draw.cpp index a660e30c..a1d58c0e 100644 --- a/imgui_draw.cpp +++ b/imgui_draw.cpp @@ -1851,6 +1851,7 @@ const char* ImFont::CalcWordWrapPositionA(float scale, const char* text, const c { line_width += blank_width; blank_width = 0.0f; + word_end = s; } blank_width += char_width; inside_word = false;