Browse Source

Groups, Tables: fixed EndGroup() failing to correctly capture current table occupied size. (#7543)

See "layout_group_endtable" test.
pull/7820/head
ocornut 4 months ago
parent
commit
e3da939b86
  1. 1
      docs/CHANGELOG.txt
  2. 8
      imgui.cpp
  3. 2
      imgui.h

1
docs/CHANGELOG.txt

@ -140,6 +140,7 @@ Other changes:
can use the clipper without knowing the amount of items beforehand. (#1311) can use the clipper without knowing the amount of items beforehand. (#1311)
In this situation, call ImGuiListClipper::SeekCursorForItem(items_count) as the end of your iteration In this situation, call ImGuiListClipper::SeekCursorForItem(items_count) as the end of your iteration
loop to position the layout cursor correctly. This is done automatically if provided a count to Begin(). loop to position the layout cursor correctly. This is done automatically if provided a count to Begin().
- Groups, Tables: fixed EndGroup() failing to correctly capture current table occupied size. (#7543)
- TabBar, Style: added style.TabBarOverlineSize / ImGuiStyleVar_TabBarOverlineSize to manipulate - TabBar, Style: added style.TabBarOverlineSize / ImGuiStyleVar_TabBarOverlineSize to manipulate
thickness of the horizontal line over selectable tabs. [@DctrNoob] thickness of the horizontal line over selectable tabs. [@DctrNoob]
- Style: close button and collapse/window-menu button hover highlight made rectangular instead of round. - Style: close button and collapse/window-menu button hover highlight made rectangular instead of round.

8
imgui.cpp

@ -10686,11 +10686,11 @@ void ImGui::EndGroup()
if (window->DC.IsSetPos) if (window->DC.IsSetPos)
ErrorCheckUsingSetCursorPosToExtendParentBoundaries(); ErrorCheckUsingSetCursorPosToExtendParentBoundaries();
ImRect group_bb(group_data.BackupCursorPos, ImMax(window->DC.CursorMaxPos, group_data.BackupCursorPos)); // Include LastItemData.Rect.Max as a workaround for e.g. EndTable() undershooting with CursorMaxPos report. (#7543)
ImRect group_bb(group_data.BackupCursorPos, ImMax(ImMax(window->DC.CursorMaxPos, g.LastItemData.Rect.Max), group_data.BackupCursorPos));
window->DC.CursorPos = group_data.BackupCursorPos; window->DC.CursorPos = group_data.BackupCursorPos;
window->DC.CursorPosPrevLine = group_data.BackupCursorPosPrevLine; window->DC.CursorPosPrevLine = group_data.BackupCursorPosPrevLine;
window->DC.CursorMaxPos = ImMax(group_data.BackupCursorMaxPos, window->DC.CursorMaxPos); window->DC.CursorMaxPos = ImMax(group_data.BackupCursorMaxPos, group_bb.Max);
window->DC.Indent = group_data.BackupIndent; window->DC.Indent = group_data.BackupIndent;
window->DC.GroupOffset = group_data.BackupGroupOffset; window->DC.GroupOffset = group_data.BackupGroupOffset;
window->DC.CurrLineSize = group_data.BackupCurrLineSize; window->DC.CurrLineSize = group_data.BackupCurrLineSize;
@ -10705,7 +10705,7 @@ void ImGui::EndGroup()
return; return;
} }
window->DC.CurrLineTextBaseOffset = ImMax(window->DC.PrevLineTextBaseOffset, group_data.BackupCurrLineTextBaseOffset); // FIXME: Incorrect, we should grab the base offset from the *first line* of the group but it is hard to obtain now. window->DC.CurrLineTextBaseOffset = ImMax(window->DC.PrevLineTextBaseOffset, group_data.BackupCurrLineTextBaseOffset); // FIXME: Incorrect, we should grab the base offset from the *first line* of the group but it is hard to obtain now.
ItemSize(group_bb.GetSize()); ItemSize(group_bb.GetSize());
ItemAdd(group_bb, 0, NULL, ImGuiItemFlags_NoTabStop); ItemAdd(group_bb, 0, NULL, ImGuiItemFlags_NoTabStop);

2
imgui.h

@ -28,7 +28,7 @@
// Library Version // Library Version
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345') // (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345')
#define IMGUI_VERSION "1.91.0 WIP" #define IMGUI_VERSION "1.91.0 WIP"
#define IMGUI_VERSION_NUM 19098 #define IMGUI_VERSION_NUM 19099
#define IMGUI_HAS_TABLE #define IMGUI_HAS_TABLE
/* /*

Loading…
Cancel
Save