mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-30 20:51:06 +01:00 
			
		
		
		
	Fixed clipping of multi-line value text when label is single-line + Fixed vertical alignment of single-line value text when label is multi-line. (#4004)
This commit is contained in:
		| @@ -51,6 +51,8 @@ Other Changes: | |||||||
| - DragScalar: Add default value for v_speed argument to match higher-level functions. (#3922) [@eliasdaler] | - DragScalar: Add default value for v_speed argument to match higher-level functions. (#3922) [@eliasdaler] | ||||||
| - ColorEdit4: Alpha default to 255 (instead of 0) when omitted in hex input. (#3973) [@squadack] | - ColorEdit4: Alpha default to 255 (instead of 0) when omitted in hex input. (#3973) [@squadack] | ||||||
| - InputText: Do not filter private unicode codepoints (e.g. icons) when pasted from clipboard. (#4005) [@dougbinks] | - InputText: Do not filter private unicode codepoints (e.g. icons) when pasted from clipboard. (#4005) [@dougbinks] | ||||||
|  | - LabelText: Fixed clipping of multi-line value text when label is single-line. (#4004) | ||||||
|  | - LabelText: Fixed vertical alignment of single-line value text when label is multi-line. (#4004) | ||||||
| - Popups: Added 'OpenPopup(ImGuiID id)' overload to facilitate calling from nested stacks. (#3993, #331) [@zlash] | - Popups: Added 'OpenPopup(ImGuiID id)' overload to facilitate calling from nested stacks. (#3993, #331) [@zlash] | ||||||
| - Backends: SDL: Rework global mouse pos availability check listing supported platforms explicitly, | - Backends: SDL: Rework global mouse pos availability check listing supported platforms explicitly, | ||||||
|   effectively fixing mouse access on Raspberry Pi. (#2837, #3950) [@lethal-guitar, @hinxx] |   effectively fixing mouse access on Raspberry Pi. (#2837, #3950) [@lethal-guitar, @hinxx] | ||||||
|   | |||||||
| @@ -350,17 +350,20 @@ void ImGui::LabelTextV(const char* label, const char* fmt, va_list args) | |||||||
|     const ImGuiStyle& style = g.Style; |     const ImGuiStyle& style = g.Style; | ||||||
|     const float w = CalcItemWidth(); |     const float w = CalcItemWidth(); | ||||||
|  |  | ||||||
|  |     const char* value_text_begin = &g.TempBuffer[0]; | ||||||
|  |     const char* value_text_end = value_text_begin + ImFormatStringV(g.TempBuffer, IM_ARRAYSIZE(g.TempBuffer), fmt, args); | ||||||
|  |     const ImVec2 value_size = CalcTextSize(value_text_begin, value_text_end, false); | ||||||
|     const ImVec2 label_size = CalcTextSize(label, NULL, true); |     const ImVec2 label_size = CalcTextSize(label, NULL, true); | ||||||
|     const ImRect value_bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(w, label_size.y + style.FramePadding.y * 2)); |  | ||||||
|     const ImRect total_bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(w + (label_size.x > 0.0f ? style.ItemInnerSpacing.x : 0.0f), style.FramePadding.y * 2) + label_size); |     const ImVec2 pos = window->DC.CursorPos; | ||||||
|  |     const ImRect value_bb(pos, pos + ImVec2(w, value_size.y + style.FramePadding.y * 2)); | ||||||
|  |     const ImRect total_bb(pos, pos + ImVec2(w + (label_size.x > 0.0f ? style.ItemInnerSpacing.x + label_size.x : 0.0f), ImMax(value_size.y, label_size.y) + style.FramePadding.y * 2)); | ||||||
|     ItemSize(total_bb, style.FramePadding.y); |     ItemSize(total_bb, style.FramePadding.y); | ||||||
|     if (!ItemAdd(total_bb, 0)) |     if (!ItemAdd(total_bb, 0)) | ||||||
|         return; |         return; | ||||||
|  |  | ||||||
|     // Render |     // Render | ||||||
|     const char* value_text_begin = &g.TempBuffer[0]; |     RenderTextClipped(value_bb.Min + style.FramePadding, value_bb.Max, value_text_begin, value_text_end, &value_size, ImVec2(0.0f, 0.0f)); | ||||||
|     const char* value_text_end = value_text_begin + ImFormatStringV(g.TempBuffer, IM_ARRAYSIZE(g.TempBuffer), fmt, args); |  | ||||||
|     RenderTextClipped(value_bb.Min, value_bb.Max, value_text_begin, value_text_end, NULL, ImVec2(0.0f, 0.5f)); |  | ||||||
|     if (label_size.x > 0.0f) |     if (label_size.x > 0.0f) | ||||||
|         RenderText(ImVec2(value_bb.Max.x + style.ItemInnerSpacing.x, value_bb.Min.y + style.FramePadding.y), label); |         RenderText(ImVec2(value_bb.Max.x + style.ItemInnerSpacing.x, value_bb.Min.y + style.FramePadding.y), label); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user