Internals, TreeNode, Selectable: tweak span_all_columns paths for clarity.
diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp
index 70ff174..c01a894 100644
--- a/imgui_widgets.cpp
+++ b/imgui_widgets.cpp
@@ -6413,20 +6413,22 @@
// Compute open and multi-select states before ItemAdd() as it clear NextItem data.
bool is_open = TreeNodeUpdateNextOpen(storage_id, flags);
- // Modify ClipRect for the ItemAdd(), faster than doing a PushColumnsBackground/PushTableBackgroundChannel for every Selectable..
- const float backup_clip_rect_min_x = window->ClipRect.Min.x;
- const float backup_clip_rect_max_x = window->ClipRect.Max.x;
+ bool is_visible;
if (span_all_columns)
{
+ // Modify ClipRect for the ItemAdd(), faster than doing a PushColumnsBackground/PushTableBackgroundChannel for every Selectable..
+ const float backup_clip_rect_min_x = window->ClipRect.Min.x;
+ const float backup_clip_rect_max_x = window->ClipRect.Max.x;
window->ClipRect.Min.x = window->ParentWorkRect.Min.x;
window->ClipRect.Max.x = window->ParentWorkRect.Max.x;
- }
- const bool is_visible = ItemAdd(interact_bb, id);
- if (span_all_columns)
- {
+ is_visible = ItemAdd(interact_bb, id);
window->ClipRect.Min.x = backup_clip_rect_min_x;
window->ClipRect.Max.x = backup_clip_rect_max_x;
}
+ else
+ {
+ is_visible = ItemAdd(interact_bb, id);
+ }
g.LastItemData.StatusFlags |= ImGuiItemStatusFlags_HasDisplayRect;
g.LastItemData.DisplayRect = frame_bb;
@@ -6796,23 +6798,24 @@
}
//if (g.IO.KeyCtrl) { GetForegroundDrawList()->AddRect(bb.Min, bb.Max, IM_COL32(0, 255, 0, 255)); }
- // Modify ClipRect for the ItemAdd(), faster than doing a PushColumnsBackground/PushTableBackgroundChannel for every Selectable..
- const float backup_clip_rect_min_x = window->ClipRect.Min.x;
- const float backup_clip_rect_max_x = window->ClipRect.Max.x;
+ const bool disabled_item = (flags & ImGuiSelectableFlags_Disabled) != 0;
+ const ImGuiItemFlags extra_item_flags = disabled_item ? (ImGuiItemFlags)ImGuiItemFlags_Disabled : ImGuiItemFlags_None;
+ bool is_visible;
if (span_all_columns)
{
+ // Modify ClipRect for the ItemAdd(), faster than doing a PushColumnsBackground/PushTableBackgroundChannel for every Selectable..
+ const float backup_clip_rect_min_x = window->ClipRect.Min.x;
+ const float backup_clip_rect_max_x = window->ClipRect.Max.x;
window->ClipRect.Min.x = window->ParentWorkRect.Min.x;
window->ClipRect.Max.x = window->ParentWorkRect.Max.x;
- }
-
- const bool disabled_item = (flags & ImGuiSelectableFlags_Disabled) != 0;
- const bool is_visible = ItemAdd(bb, id, NULL, disabled_item ? (ImGuiItemFlags)ImGuiItemFlags_Disabled : ImGuiItemFlags_None);
-
- if (span_all_columns)
- {
+ is_visible = ItemAdd(bb, id, NULL, extra_item_flags);
window->ClipRect.Min.x = backup_clip_rect_min_x;
window->ClipRect.Max.x = backup_clip_rect_max_x;
}
+ else
+ {
+ is_visible = ItemAdd(bb, id, NULL, extra_item_flags);
+ }
const bool is_multi_select = (g.LastItemData.InFlags & ImGuiItemFlags_IsMultiSelect) != 0;
if (!is_visible)