Clipper, Tables: Improved error reporting when misusing the clipper inside a table + made the assert a better recoverable error. (#9350)
Amend 20e040c8
This commit is contained in:
@@ -48,6 +48,11 @@ Other Changes:
|
|||||||
multi-line edit is clipped due to being out of view.
|
multi-line edit is clipped due to being out of view.
|
||||||
- Fonts:
|
- Fonts:
|
||||||
- imgui_freetype: add FreeType headers & compiled version in 'About Dear ImGui' details.
|
- imgui_freetype: add FreeType headers & compiled version in 'About Dear ImGui' details.
|
||||||
|
- Clipper:
|
||||||
|
- Improved error reporting when misusing the clipper inside a table (prioritize
|
||||||
|
reporting the common clipper error over a table sanity check assert). (#9350)
|
||||||
|
- Tweaked assert triggering when first item height measurement fails, and made it
|
||||||
|
a better recoverable error. (#9350)
|
||||||
- Backends:
|
- Backends:
|
||||||
- Metal: avoid redundant vertex buffer bind in SetupRenderState, which leads
|
- Metal: avoid redundant vertex buffer bind in SetupRenderState, which leads
|
||||||
to validation issue. (#9343) [@Hunam6]
|
to validation issue. (#9343) [@Hunam6]
|
||||||
|
|||||||
@@ -3387,9 +3387,6 @@ static bool ImGuiListClipper_StepInternal(ImGuiListClipper* clipper)
|
|||||||
if (clipper->ItemsHeight <= 0.0f)
|
if (clipper->ItemsHeight <= 0.0f)
|
||||||
{
|
{
|
||||||
IM_ASSERT(data->StepNo == 1);
|
IM_ASSERT(data->StepNo == 1);
|
||||||
if (table)
|
|
||||||
IM_ASSERT(table->RowPosY1 == clipper->StartPosY && table->RowPosY2 == window->DC.CursorPos.y);
|
|
||||||
|
|
||||||
bool affected_by_floating_point_precision = ImIsFloatAboveGuaranteedIntegerPrecision((float)clipper->StartPosY) || ImIsFloatAboveGuaranteedIntegerPrecision(window->DC.CursorPos.y);
|
bool affected_by_floating_point_precision = ImIsFloatAboveGuaranteedIntegerPrecision((float)clipper->StartPosY) || ImIsFloatAboveGuaranteedIntegerPrecision(window->DC.CursorPos.y);
|
||||||
if (affected_by_floating_point_precision)
|
if (affected_by_floating_point_precision)
|
||||||
{
|
{
|
||||||
@@ -3403,7 +3400,14 @@ static bool ImGuiListClipper_StepInternal(ImGuiListClipper* clipper)
|
|||||||
}
|
}
|
||||||
if (clipper->ItemsHeight == 0.0f && clipper->ItemsCount == INT_MAX) // Accept that no item have been submitted if in indeterminate mode.
|
if (clipper->ItemsHeight == 0.0f && clipper->ItemsCount == INT_MAX) // Accept that no item have been submitted if in indeterminate mode.
|
||||||
return false;
|
return false;
|
||||||
IM_ASSERT(clipper->ItemsHeight > 0.0f && "Unable to calculate item height! First item hasn't moved the cursor vertically!");
|
if (clipper->ItemsHeight <= 0.0f)
|
||||||
|
{
|
||||||
|
IM_ASSERT_USER_ERROR(clipper->ItemsHeight > 0.0f, "ImGuiListClipper: Failed to calculate item height! First item hasn't been submitted by user code, or has not moved the cursor vertically!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (table)
|
||||||
|
IM_ASSERT(table->RowPosY1 == clipper->StartPosY && table->RowPosY2 == window->DC.CursorPos.y);
|
||||||
|
|
||||||
calc_clipping = true; // If item height had to be calculated, calculate clipping afterwards.
|
calc_clipping = true; // If item height had to be calculated, calculate clipping afterwards.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user