mirror of
https://github.com/ocornut/imgui.git
synced 2026-05-28 20:26:06 +08:00
ImStrv: detect and fixed misuses of CalcTextSize() old signature. (9321)
build / Build - Windows (push) Has been cancelled
build / Build - Linux (push) Has been cancelled
build / Build - MacOS (push) Has been cancelled
build / Build - iOS (push) Has been cancelled
build / Build - Emscripten (push) Has been cancelled
build / Build - Android (push) Has been cancelled
build / Test - Windows (push) Has been cancelled
build / Test - Linux (push) Has been cancelled
build / Build - Windows (push) Has been cancelled
build / Build - Linux (push) Has been cancelled
build / Build - MacOS (push) Has been cancelled
build / Build - iOS (push) Has been cancelled
build / Build - Emscripten (push) Has been cancelled
build / Build - Android (push) Has been cancelled
build / Test - Windows (push) Has been cancelled
build / Test - Linux (push) Has been cancelled
For IMGUI_DISABLE_OBSOLETE_FUNCTIONS only.
This commit is contained in:
@@ -17200,7 +17200,7 @@ bool ImGui::DebugBreakButton(const char* label, const char* description_of_locat
|
|||||||
|
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
const ImGuiID id = window->GetID(label);
|
const ImGuiID id = window->GetID(label);
|
||||||
const ImVec2 label_size = CalcTextSize(label, NULL, true);
|
const ImVec2 label_size = CalcTextSize(label, true);
|
||||||
ImVec2 pos = window->DC.CursorPos + ImVec2(0.0f, window->DC.CurrLineTextBaseOffset);
|
ImVec2 pos = window->DC.CursorPos + ImVec2(0.0f, window->DC.CurrLineTextBaseOffset);
|
||||||
ImVec2 size = ImVec2(label_size.x + g.Style.FramePadding.x * 2.0f, label_size.y);
|
ImVec2 size = ImVec2(label_size.x + g.Style.FramePadding.x * 2.0f, label_size.y);
|
||||||
|
|
||||||
|
|||||||
@@ -1195,6 +1195,10 @@ IM_MSVC_RUNTIME_CHECKS_OFF
|
|||||||
inline IM_FMTLIST(3) bool TreeNodeExV(const char* str_id, ImGuiTreeNodeFlags flags, const char* fmt, va_list args) { return TreeNodeEx(ImStrv(str_id), flags, fmt, args); }
|
inline IM_FMTLIST(3) bool TreeNodeExV(const char* str_id, ImGuiTreeNodeFlags flags, const char* fmt, va_list args) { return TreeNodeEx(ImStrv(str_id), flags, fmt, args); }
|
||||||
inline void TreePush(const char* str_id) { TreePush(ImStrv(str_id)); }
|
inline void TreePush(const char* str_id) { TreePush(ImStrv(str_id)); }
|
||||||
IM_MSVC_RUNTIME_CHECKS_RESTORE
|
IM_MSVC_RUNTIME_CHECKS_RESTORE
|
||||||
|
|
||||||
|
// Detect misuses (#9321)
|
||||||
|
// FIXME-IMSTR: Validate that syntax is ok for our minimum target.
|
||||||
|
ImVec2 CalcTextSize(ImStrv, const char*, bool hide_text_after_double_hash = false, float wrap_width = -1.0f) = delete;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|||||||
+2
-2
@@ -3128,7 +3128,7 @@ float ImGui::TableGetHeaderAngledMaxLabelWidth()
|
|||||||
for (int column_n = 0; column_n < table->ColumnsCount; column_n++)
|
for (int column_n = 0; column_n < table->ColumnsCount; column_n++)
|
||||||
if (IM_BITARRAY_TESTBIT(table->EnabledMaskByIndex, column_n))
|
if (IM_BITARRAY_TESTBIT(table->EnabledMaskByIndex, column_n))
|
||||||
if (table->Columns[column_n].Flags & ImGuiTableColumnFlags_AngledHeader)
|
if (table->Columns[column_n].Flags & ImGuiTableColumnFlags_AngledHeader)
|
||||||
width = ImMax(width, CalcTextSize(TableGetColumnName(table, column_n), NULL, true).x);
|
width = ImMax(width, CalcTextSize(TableGetColumnName(table, column_n), true).x);
|
||||||
return width + g.Style.CellPadding.y * 2.0f; // Swap padding
|
return width + g.Style.CellPadding.y * 2.0f; // Swap padding
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3537,7 +3537,7 @@ static bool MenuItemForColumnReorder(ImStrv label, bool selected, bool enabled)
|
|||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
ImGuiWindow* window = g.CurrentWindow;
|
ImGuiWindow* window = g.CurrentWindow;
|
||||||
|
|
||||||
ImVec2 label_size = CalcTextSize(label, NULL, true);
|
ImVec2 label_size = CalcTextSize(label, true);
|
||||||
ImGuiMenuColumns* offsets = &window->DC.MenuColumns;
|
ImGuiMenuColumns* offsets = &window->DC.MenuColumns;
|
||||||
float checkmark_w = IM_TRUNC(g.FontSize * 1.20f);
|
float checkmark_w = IM_TRUNC(g.FontSize * 1.20f);
|
||||||
float min_w = offsets->DeclColumns(0.0f, label_size.x, 0.0f, checkmark_w); // Feedback for next frame
|
float min_w = offsets->DeclColumns(0.0f, label_size.x, 0.0f, checkmark_w); // Feedback for next frame
|
||||||
|
|||||||
+3
-4
@@ -1517,7 +1517,6 @@ bool ImGui::TextLink(ImStrv label)
|
|||||||
|
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
const ImGuiID id = window->GetID(label);
|
const ImGuiID id = window->GetID(label);
|
||||||
|
|
||||||
const ImStrv label_for_display(label.Begin, FindRenderedTextEnd(label));
|
const ImStrv label_for_display(label.Begin, FindRenderedTextEnd(label));
|
||||||
ImVec2 pos(window->DC.CursorPos.x, window->DC.CursorPos.y + window->DC.CurrLineTextBaseOffset);
|
ImVec2 pos(window->DC.CursorPos.x, window->DC.CursorPos.y + window->DC.CurrLineTextBaseOffset);
|
||||||
ImVec2 size = CalcTextSize(label_for_display, false);
|
ImVec2 size = CalcTextSize(label_for_display, false);
|
||||||
@@ -5609,14 +5608,14 @@ bool ImGui::InputTextEx(ImStrv label, ImStrv hint, char* buf, int buf_size, cons
|
|||||||
|
|
||||||
float rect_width = 0.0f;
|
float rect_width = 0.0f;
|
||||||
if (line_selected_begin < line_selected_end)
|
if (line_selected_begin < line_selected_end)
|
||||||
rect_width += CalcTextSize(line_selected_begin, line_selected_end).x;
|
rect_width += CalcTextSize(ImStrv(line_selected_begin, line_selected_end)).x;
|
||||||
if (text_selected_begin <= p_eol && text_selected_end > p_eol && !p_eol_is_wrap)
|
if (text_selected_begin <= p_eol && text_selected_end > p_eol && !p_eol_is_wrap)
|
||||||
rect_width += bg_eol_width; // So we can see selected empty lines
|
rect_width += bg_eol_width; // So we can see selected empty lines
|
||||||
if (rect_width == 0.0f)
|
if (rect_width == 0.0f)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ImRect rect;
|
ImRect rect;
|
||||||
rect.Min.x = draw_pos.x - draw_scroll.x + CalcTextSize(p, line_selected_begin).x;
|
rect.Min.x = draw_pos.x - draw_scroll.x + CalcTextSize(ImStrv(p, line_selected_begin)).x;
|
||||||
rect.Min.y = draw_pos.y - draw_scroll.y + line_n * g.FontSize;
|
rect.Min.y = draw_pos.y - draw_scroll.y + line_n * g.FontSize;
|
||||||
rect.Max.x = rect.Min.x + rect_width;
|
rect.Max.x = rect.Min.x + rect_width;
|
||||||
rect.Max.y = rect.Min.y + bg_offy_dn + g.FontSize;
|
rect.Max.y = rect.Min.y + bg_offy_dn + g.FontSize;
|
||||||
@@ -5629,7 +5628,7 @@ bool ImGui::InputTextEx(ImStrv label, ImStrv hint, char* buf, int buf_size, cons
|
|||||||
|
|
||||||
// Find render position for right alignment (single-line only)
|
// Find render position for right alignment (single-line only)
|
||||||
if (g.ActiveId != id && (flags & ImGuiInputTextFlags_ElideLeft) && !render_cursor && !render_selection)
|
if (g.ActiveId != id && (flags & ImGuiInputTextFlags_ElideLeft) && !render_cursor && !render_selection)
|
||||||
draw_pos.x = ImMin(draw_pos.x, frame_bb.Max.x - CalcTextSize(buf_display, NULL).x - style.FramePadding.x);
|
draw_pos.x = ImMin(draw_pos.x, frame_bb.Max.x - CalcTextSize(buf_display).x - style.FramePadding.x);
|
||||||
//draw_scroll.x = state->Scroll.x; // Preserve scroll when inactive?
|
//draw_scroll.x = state->Scroll.x; // Preserve scroll when inactive?
|
||||||
|
|
||||||
// Render text
|
// Render text
|
||||||
|
|||||||
Reference in New Issue
Block a user