mirror of
https://github.com/ocornut/imgui.git
synced 2025-09-05 19:08:19 +00:00
Fonts: reworked text ellipsis logic to ensure a "..." is always displayed instead of a single character. (#7024)
Requires97d85338e8
ande4a865177e
This commit is contained in:
@@ -84,6 +84,8 @@ Other changes:
|
||||
EndPopup() call. (#1651, #8499)
|
||||
- Error Handling: added better error report and recovery when calling EndFrame()
|
||||
or Render() without NewFrame(). Was previously only an assert.
|
||||
- Fonts: reworked text ellipsis logic to ensure a "..." is always displayed instead
|
||||
of a single character. (#7024)
|
||||
- Fonts: word-wrapping code handle ideographic comma & full stop (U+3001, U+3002). (#8540)
|
||||
- Fonts: fixed CalcWordWrapPositionA() fallback when width is too small to wrap:
|
||||
would use a +1 offset instead of advancing to the next UTF-8 codepoint. (#8540)
|
||||
|
@@ -3720,12 +3720,6 @@ void ImGui::RenderTextEllipsis(ImDrawList* draw_list, const ImVec2& pos_min, con
|
||||
// We can now claim the space between pos_max.x and ellipsis_max.x
|
||||
const float text_avail_width = ImMax((ImMax(pos_max.x, ellipsis_max_x) - ellipsis_width) - pos_min.x, 1.0f);
|
||||
float text_size_clipped_x = font->CalcTextSizeA(font_size, text_avail_width, 0.0f, text, text_end_full, &text_end_ellipsis).x;
|
||||
if (text == text_end_ellipsis && text_end_ellipsis < text_end_full)
|
||||
{
|
||||
// Always display at least 1 character if there's no room for character + ellipsis
|
||||
text_end_ellipsis = text + ImTextCountUtf8BytesFromChar(text, text_end_full);
|
||||
text_size_clipped_x = font->CalcTextSizeA(font_size, FLT_MAX, 0.0f, text, text_end_ellipsis).x;
|
||||
}
|
||||
while (text_end_ellipsis > text && ImCharIsBlankA(text_end_ellipsis[-1]))
|
||||
{
|
||||
// Trim trailing space before ellipsis (FIXME: Supporting non-ascii blanks would be nice, for this we need a function to backtrack in UTF-8 text)
|
||||
|
Reference in New Issue
Block a user