From 7c2a37a5d5409541f26157f52f60de6cca974adc Mon Sep 17 00:00:00 2001 From: 4DBug <4DBug@github.com> Date: Thu, 8 Oct 2026 13:18:29 -0500 Subject: [PATCH] Style Editor Colors tab: ListClipper so only visible rows are submitted --- build/ImGui.linemap.json | 2 +- build/ImGui.luau | 13 +++++++++++-- imgui/imgui_demo_widgets.lua | 13 +++++++++++-- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/build/ImGui.linemap.json b/build/ImGui.linemap.json index 5366462..01b38a9 100644 --- a/build/ImGui.linemap.json +++ b/build/ImGui.linemap.json @@ -1 +1 @@ -[[12, "imgui.lua"], [13808, "imgui_demo.lua"], [14741, "imgui_demo_2.lua"], [17816, "imgui_demo_apps.lua"], [19075, "imgui_demo_tools.lua"], [20401, "imgui_demo_widgets.lua"], [22325, "imgui_docking.lua"], [25453, "imgui_dragdrop.lua"], [25745, "imgui_draw.lua"], [30983, "imgui_h.lua"], [33181, "imgui_impl_roblox.lua"], [34307, "imgui_impl_roblox_fonts.lua"], [40710, "imgui_internal.lua"], [43882, "imgui_tables.lua"], [48229, "imgui_tabs.lua"], [49396, "imgui_widgets.lua"], [57971, "imstb_rectpack.lua"], [58417, "imstb_textedit.lua"], [59658, "imstb_truetype.lua"], [62126, "imstd_minstdio.lua"]] \ No newline at end of file +[[12, "imgui.lua"], [13808, "imgui_demo.lua"], [14741, "imgui_demo_2.lua"], [17816, "imgui_demo_apps.lua"], [19075, "imgui_demo_tools.lua"], [20401, "imgui_demo_widgets.lua"], [22334, "imgui_docking.lua"], [25462, "imgui_dragdrop.lua"], [25754, "imgui_draw.lua"], [30992, "imgui_h.lua"], [33190, "imgui_impl_roblox.lua"], [34316, "imgui_impl_roblox_fonts.lua"], [40719, "imgui_internal.lua"], [43891, "imgui_tables.lua"], [48238, "imgui_tabs.lua"], [49405, "imgui_widgets.lua"], [57980, "imstb_rectpack.lua"], [58426, "imstb_textedit.lua"], [59667, "imstb_truetype.lua"], [62135, "imstd_minstdio.lua"]] \ No newline at end of file diff --git a/build/ImGui.luau b/build/ImGui.luau index 4fb0544..ae1921d 100644 --- a/build/ImGui.luau +++ b/build/ImGui.luau @@ -22235,9 +22235,17 @@ function ImGui.ShowStyleEditor(ref) ImGui.SetNextWindowSizeConstraints(ImVec2(0.0, ImGui.GetTextLineHeightWithSpacing() * 10), ImVec2(FLT_MAX, FLT_MAX)) ImGui.BeginChild("##colors", ImVec2(0, 0), bit32.bor(ImGuiChildFlags.Borders, ImGuiChildFlags.NavFlattened), bit32.bor(ImGuiWindowFlags.AlwaysVerticalScrollbar, ImGuiWindowFlags.AlwaysHorizontalScrollbar)) ImGui.PushItemWidth(ImGui.GetFontSize() * -12) + -- [Luau] clipped: only visible rows are submitted (upstream submits every color) + local visible_cols = {} for i = 0, ImGuiCol.COUNT - 1 do + if se.filter:PassFilter(ImGui.GetStyleColorName(i)) then visible_cols[#visible_cols + 1] = i end + end + local clipper = ImGuiListClipper() + clipper:Begin(#visible_cols) + while clipper:Step() do for row = clipper.DisplayStart, clipper.DisplayEnd - 1 do + local i = visible_cols[row + 1] local name = ImGui.GetStyleColorName(i) - if se.filter:PassFilter(name) then + do ImGui.PushID(i) if ImGui.DebugFlashStyleColor then if ImGui.Button("?") then ImGui.DebugFlashStyleColor(i) end @@ -22253,7 +22261,8 @@ function ImGui.ShowStyleEditor(ref) ImGui.TextUnformatted(name) ImGui.PopID() end - end + end end + clipper:End() ImGui.PopItemWidth() ImGui.EndChild() ImGui.EndTabItem() diff --git a/imgui/imgui_demo_widgets.lua b/imgui/imgui_demo_widgets.lua index 3f7685a..e933563 100644 --- a/imgui/imgui_demo_widgets.lua +++ b/imgui/imgui_demo_widgets.lua @@ -1835,9 +1835,17 @@ function ImGui.ShowStyleEditor(ref) ImGui.SetNextWindowSizeConstraints(ImVec2(0.0, ImGui.GetTextLineHeightWithSpacing() * 10), ImVec2(FLT_MAX, FLT_MAX)) ImGui.BeginChild("##colors", ImVec2(0, 0), bit32.bor(ImGuiChildFlags.Borders, ImGuiChildFlags.NavFlattened), bit32.bor(ImGuiWindowFlags.AlwaysVerticalScrollbar, ImGuiWindowFlags.AlwaysHorizontalScrollbar)) ImGui.PushItemWidth(ImGui.GetFontSize() * -12) + -- [Luau] clipped: only visible rows are submitted (upstream submits every color) + local visible_cols = {} for i = 0, ImGuiCol.COUNT - 1 do + if se.filter:PassFilter(ImGui.GetStyleColorName(i)) then visible_cols[#visible_cols + 1] = i end + end + local clipper = ImGuiListClipper() + clipper:Begin(#visible_cols) + while clipper:Step() do for row = clipper.DisplayStart, clipper.DisplayEnd - 1 do + local i = visible_cols[row + 1] local name = ImGui.GetStyleColorName(i) - if se.filter:PassFilter(name) then + do ImGui.PushID(i) if ImGui.DebugFlashStyleColor then if ImGui.Button("?") then ImGui.DebugFlashStyleColor(i) end @@ -1853,7 +1861,8 @@ function ImGui.ShowStyleEditor(ref) ImGui.TextUnformatted(name) ImGui.PopID() end - end + end end + clipper:End() ImGui.PopItemWidth() ImGui.EndChild() ImGui.EndTabItem()