Skip to content

Commit 50dbb08

Browse files
committed
Tables: sneakily honor ImGuiNextWindowDataFlags_HasChildFlags/ImGuiNextWindowDataFlags_HasWindowFlags as a way to facilitate various hacks/workarounds.
1 parent e368015 commit 50dbb08

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

imgui_internal.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -1194,8 +1194,9 @@ enum ImGuiNextWindowDataFlags_
11941194
ImGuiNextWindowDataFlags_HasFocus = 1 << 5,
11951195
ImGuiNextWindowDataFlags_HasBgAlpha = 1 << 6,
11961196
ImGuiNextWindowDataFlags_HasScroll = 1 << 7,
1197-
ImGuiNextWindowDataFlags_HasChildFlags = 1 << 8,
1198-
ImGuiNextWindowDataFlags_HasRefreshPolicy = 1 << 9,
1197+
ImGuiNextWindowDataFlags_HasWindowFlags = 1 << 8,
1198+
ImGuiNextWindowDataFlags_HasChildFlags = 1 << 9,
1199+
ImGuiNextWindowDataFlags_HasRefreshPolicy = 1 << 10,
11991200
};
12001201

12011202
// Storage for SetNexWindow** functions
@@ -1212,6 +1213,7 @@ struct ImGuiNextWindowData
12121213
ImVec2 SizeVal;
12131214
ImVec2 ContentSizeVal;
12141215
ImVec2 ScrollVal;
1216+
ImGuiWindowFlags WindowFlags; // Only honored by BeginTable()
12151217
ImGuiChildFlags ChildFlags;
12161218
bool CollapsedVal;
12171219
ImRect SizeConstraintRect;

imgui_tables.cpp

+5-2
Original file line numberDiff line numberDiff line change
@@ -420,8 +420,11 @@ bool ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG
420420
SetNextWindowScroll(ImVec2(0.0f, 0.0f));
421421

422422
// Create scrolling region (without border and zero window padding)
423-
ImGuiWindowFlags child_window_flags = (flags & ImGuiTableFlags_ScrollX) ? ImGuiWindowFlags_HorizontalScrollbar : ImGuiWindowFlags_None;
424-
BeginChildEx(name, instance_id, outer_rect.GetSize(), ImGuiChildFlags_None, child_window_flags);
423+
ImGuiChildFlags child_child_flags = (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasChildFlags) ? g.NextWindowData.ChildFlags : ImGuiChildFlags_None;
424+
ImGuiWindowFlags child_window_flags = (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasWindowFlags) ? g.NextWindowData.WindowFlags : ImGuiWindowFlags_None;
425+
if (flags & ImGuiTableFlags_ScrollX)
426+
child_window_flags |= ImGuiWindowFlags_HorizontalScrollbar;
427+
BeginChildEx(name, instance_id, outer_rect.GetSize(), child_child_flags, child_window_flags);
425428
table->InnerWindow = g.CurrentWindow;
426429
table->WorkRect = table->InnerWindow->WorkRect;
427430
table->OuterRect = table->InnerWindow->Rect();

0 commit comments

Comments
 (0)