|
@@ -167,7 +167,21 @@ void ImGui::TextEx(const char* text, const char* text_end, ImGuiTextFlags flags)
|
|
|
const ImVec2 text_pos(window->DC.CursorPos.x, window->DC.CursorPos.y + window->DC.CurrLineTextBaseOffset);
|
|
|
const float wrap_pos_x = window->DC.TextWrapPos;
|
|
|
const bool wrap_enabled = (wrap_pos_x >= 0.0f);
|
|
|
- if (text_end - text > 2000 && !wrap_enabled)
|
|
|
+ if (text_end - text <= 2000 || wrap_enabled)
|
|
|
+ {
|
|
|
+ // Common case
|
|
|
+ const float wrap_width = wrap_enabled ? CalcWrapWidthForPos(window->DC.CursorPos, wrap_pos_x) : 0.0f;
|
|
|
+ const ImVec2 text_size = CalcTextSize(text_begin, text_end, false, wrap_width);
|
|
|
+
|
|
|
+ ImRect bb(text_pos, text_pos + text_size);
|
|
|
+ ItemSize(text_size, 0.0f);
|
|
|
+ if (!ItemAdd(bb, 0))
|
|
|
+ return;
|
|
|
+
|
|
|
+ // Render (we don't hide text after ## in this end-user function)
|
|
|
+ RenderTextWrapped(bb.Min, text_begin, text_end, wrap_width);
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
// Long text!
|
|
|
// Perform manual coarse clipping to optimize for long multi-line text
|
|
@@ -240,19 +254,6 @@ void ImGui::TextEx(const char* text, const char* text_end, ImGuiTextFlags flags)
|
|
|
ItemSize(text_size, 0.0f);
|
|
|
ItemAdd(bb, 0);
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- const float wrap_width = wrap_enabled ? CalcWrapWidthForPos(window->DC.CursorPos, wrap_pos_x) : 0.0f;
|
|
|
- const ImVec2 text_size = CalcTextSize(text_begin, text_end, false, wrap_width);
|
|
|
-
|
|
|
- ImRect bb(text_pos, text_pos + text_size);
|
|
|
- ItemSize(text_size, 0.0f);
|
|
|
- if (!ItemAdd(bb, 0))
|
|
|
- return;
|
|
|
-
|
|
|
- // Render (we don't hide text after ## in this end-user function)
|
|
|
- RenderTextWrapped(bb.Min, text_begin, text_end, wrap_width);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
void ImGui::TextUnformatted(const char* text, const char* text_end)
|
|
@@ -1285,7 +1286,7 @@ void ImGui::Bullet()
|
|
|
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
const ImGuiStyle& style = g.Style;
|
|
|
- const float line_height = ImMax(ImMin(window->DC.CurrLineSize.y, g.FontSize + g.Style.FramePadding.y * 2), g.FontSize);
|
|
|
+ const float line_height = ImMax(ImMin(window->DC.CurrLineSize.y, g.FontSize + style.FramePadding.y * 2), g.FontSize);
|
|
|
const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(g.FontSize, line_height));
|
|
|
ItemSize(bb);
|
|
|
if (!ItemAdd(bb, 0))
|