mirror of
https://github.com/ocornut/imgui.git
synced 2024-12-18 18:46:13 +01:00
ImStrv: Fixed BeginCombo() with ImGuiComboFlags_CustomPreview + fixes for latest (amended).
This commit is contained in:
parent
9fa0a03e4f
commit
b681b10a50
@ -4110,12 +4110,12 @@ void ImFont::RenderText(ImDrawList* draw_list, float size, const ImVec2 & pos, I
|
|||||||
// FIXME-OPT: This is not optimal as do first do a search for \n before calling CalcWordWrapPositionA().
|
// FIXME-OPT: This is not optimal as do first do a search for \n before calling CalcWordWrapPositionA().
|
||||||
// If the specs for CalcWordWrapPositionA() were reworked to optionally return on \n we could combine both.
|
// If the specs for CalcWordWrapPositionA() were reworked to optionally return on \n we could combine both.
|
||||||
// However it is still better than nothing performing the fast-forward!
|
// However it is still better than nothing performing the fast-forward!
|
||||||
s = CalcWordWrapPositionA(scale, s, line_end, wrap_width);
|
s = CalcWordWrapPositionA(scale, ImStrv(s, line_end), wrap_width);
|
||||||
s = CalcWordWrapNextLineStartA(s, text.End);
|
s = CalcWordWrapNextLineStartA(s, text_end);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
s = line_end ? line_end + 1 : text.End;
|
s = line_end ? line_end + 1 : text_end;
|
||||||
}
|
}
|
||||||
y += line_height;
|
y += line_height;
|
||||||
}
|
}
|
||||||
|
@ -1832,7 +1832,7 @@ bool ImGui::BeginCombo(ImStrv label, ImStrv preview_value, ImGuiComboFlags flags
|
|||||||
|
|
||||||
const float arrow_size = (flags & ImGuiComboFlags_NoArrowButton) ? 0.0f : GetFrameHeight();
|
const float arrow_size = (flags & ImGuiComboFlags_NoArrowButton) ? 0.0f : GetFrameHeight();
|
||||||
const ImVec2 label_size = CalcTextSize(label, true);
|
const ImVec2 label_size = CalcTextSize(label, true);
|
||||||
const float preview_width = ((flags & ImGuiComboFlags_WidthFitPreview) && (preview_value != NULL)) ? CalcTextSize(preview_value, true).x : 0.0f;
|
const float preview_width = ((flags & ImGuiComboFlags_WidthFitPreview) && preview_value) ? CalcTextSize(preview_value, true).x : 0.0f;
|
||||||
const float w = (flags & ImGuiComboFlags_NoPreview) ? arrow_size : ((flags & ImGuiComboFlags_WidthFitPreview) ? (arrow_size + preview_width + style.FramePadding.x * 2.0f) : CalcItemWidth());
|
const float w = (flags & ImGuiComboFlags_NoPreview) ? arrow_size : ((flags & ImGuiComboFlags_WidthFitPreview) ? (arrow_size + preview_width + style.FramePadding.x * 2.0f) : CalcItemWidth());
|
||||||
const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(w, label_size.y + style.FramePadding.y * 2.0f));
|
const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(w, label_size.y + style.FramePadding.y * 2.0f));
|
||||||
const ImRect total_bb(bb.Min, bb.Max + ImVec2(label_size.x > 0.0f ? style.ItemInnerSpacing.x + label_size.x : 0.0f, 0.0f));
|
const ImRect total_bb(bb.Min, bb.Max + ImVec2(label_size.x > 0.0f ? style.ItemInnerSpacing.x + label_size.x : 0.0f, 0.0f));
|
||||||
@ -1871,7 +1871,7 @@ bool ImGui::BeginCombo(ImStrv label, ImStrv preview_value, ImGuiComboFlags flags
|
|||||||
if (flags & ImGuiComboFlags_CustomPreview)
|
if (flags & ImGuiComboFlags_CustomPreview)
|
||||||
{
|
{
|
||||||
g.ComboPreviewData.PreviewRect = ImRect(bb.Min.x, bb.Min.y, value_x2, bb.Max.y);
|
g.ComboPreviewData.PreviewRect = ImRect(bb.Min.x, bb.Min.y, value_x2, bb.Max.y);
|
||||||
IM_ASSERT(!preview_value);
|
IM_ASSERT(preview_value.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Render preview and label
|
// Render preview and label
|
||||||
|
Loading…
Reference in New Issue
Block a user