diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 71d30d407..0ed0a53bc 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -39,6 +39,9 @@ Breaking changes: Other changes: +- Fixed cases where CTRL+Tab or Modal can occasionally lead to the creation of ImDrawCmd with + zero triangles, which would makes the render loop of some backends assert (e.g. Metal with + debugging, Allegro). (#4857, #5937) - Inputs, Scrolling: better selection of scrolling window when hovering nested windows and when backend/OS is emitting dual-axis wheeling inputs (typically touch pads on macOS). We now select a primary axis based on recent events, and select a target window based on it. diff --git a/imgui_draw.cpp b/imgui_draw.cpp index 03b0e70eb..349891dc5 100644 --- a/imgui_draw.cpp +++ b/imgui_draw.cpp @@ -449,8 +449,7 @@ void ImDrawList::_PopUnusedDrawCmd() { if (CmdBuffer.Size == 0) return; - ImDrawCmd* curr_cmd = &CmdBuffer.Data[CmdBuffer.Size - 1]; - if (curr_cmd->ElemCount == 0 && curr_cmd->UserCallback == NULL) + for (ImDrawCmd* curr_cmd = &CmdBuffer.Data[CmdBuffer.Size - 1]; curr_cmd->ElemCount == 0 && curr_cmd->UserCallback == NULL; curr_cmd--) CmdBuffer.pop_back(); }