From a1b8dbcf271b584ffdad3efaf4605f86e6067d6b Mon Sep 17 00:00:00 2001 From: Haselnussbomber Date: Thu, 17 Jul 2025 01:54:40 +0200 Subject: [PATCH] Simplify ImGuiListClipper initialization --- .../Interface/ImGuiFileDialog/FileDialog.UI.cs | 6 +----- .../SingleFontChooserDialog.cs | 6 +++--- .../Internal/Windows/ConsoleWindow.cs | 5 +---- .../Data/Widgets/SeStringRendererTestWidget.cs | 2 +- .../Internal/Windows/Data/Widgets/TexWidget.cs | 4 ++-- .../Windows/Data/Widgets/UIColorWidget.cs | 2 +- Dalamud/Interface/Utility/ImGuiClip.cs | 18 +++--------------- 7 files changed, 12 insertions(+), 31 deletions(-) diff --git a/Dalamud/Interface/ImGuiFileDialog/FileDialog.UI.cs b/Dalamud/Interface/ImGuiFileDialog/FileDialog.UI.cs index fa74b424a..4940793cc 100644 --- a/Dalamud/Interface/ImGuiFileDialog/FileDialog.UI.cs +++ b/Dalamud/Interface/ImGuiFileDialog/FileDialog.UI.cs @@ -381,11 +381,7 @@ public partial class FileDialog if (this.filteredFiles.Count > 0) { - ImGuiListClipperPtr clipper; - unsafe - { - clipper = new ImGuiListClipperPtr(ImGui.ImGuiListClipper()); - } + var clipper = ImGui.ImGuiListClipper(); lock (this.filesLock) { diff --git a/Dalamud/Interface/ImGuiFontChooserDialog/SingleFontChooserDialog.cs b/Dalamud/Interface/ImGuiFontChooserDialog/SingleFontChooserDialog.cs index 4aa57eceb..2b25ffca5 100644 --- a/Dalamud/Interface/ImGuiFontChooserDialog/SingleFontChooserDialog.cs +++ b/Dalamud/Interface/ImGuiFontChooserDialog/SingleFontChooserDialog.cs @@ -689,7 +689,7 @@ public sealed class SingleFontChooserDialog : IDisposable if (ImGui.BeginChild("##familyList", ImGui.GetContentRegionAvail())) { - var clipper = new ImGuiListClipperPtr(ImGui.ImGuiListClipper()); + var clipper = ImGui.ImGuiListClipper(); var lineHeight = ImGui.GetTextLineHeightWithSpacing(); if ((changed || this.firstDrawAfterRefresh) && this.selectedFamilyIndex != -1) @@ -856,7 +856,7 @@ public sealed class SingleFontChooserDialog : IDisposable if (ImGui.BeginChild("##fontList")) { - var clipper = new ImGuiListClipperPtr(ImGui.ImGuiListClipper()); + var clipper = ImGui.ImGuiListClipper(); var lineHeight = ImGui.GetTextLineHeightWithSpacing(); if ((changed || this.firstDrawAfterRefresh) && this.selectedFontIndex != -1) @@ -960,7 +960,7 @@ public sealed class SingleFontChooserDialog : IDisposable if (ImGui.BeginChild("##fontSizeList")) { - var clipper = new ImGuiListClipperPtr(ImGui.ImGuiListClipper()); + var clipper = ImGui.ImGuiListClipper(); var lineHeight = ImGui.GetTextLineHeightWithSpacing(); if (changed && this.selectedFontIndex != -1) diff --git a/Dalamud/Interface/Internal/Windows/ConsoleWindow.cs b/Dalamud/Interface/Internal/Windows/ConsoleWindow.cs index 00afd53b0..8e030819b 100644 --- a/Dalamud/Interface/Internal/Windows/ConsoleWindow.cs +++ b/Dalamud/Interface/Internal/Windows/ConsoleWindow.cs @@ -112,10 +112,7 @@ internal class ConsoleWindow : Window, IDisposable this.configuration.DalamudConfigurationSaved += this.OnDalamudConfigurationSaved; - unsafe - { - this.clipperPtr = new(ImGui.ImGuiListClipper()); - } + this.clipperPtr = ImGui.ImGuiListClipper(); } /// Gets the queue where log entries that are not processed yet are stored. diff --git a/Dalamud/Interface/Internal/Windows/Data/Widgets/SeStringRendererTestWidget.cs b/Dalamud/Interface/Internal/Windows/Data/Widgets/SeStringRendererTestWidget.cs index 3f677c4f0..418eac80d 100644 --- a/Dalamud/Interface/Internal/Windows/Data/Widgets/SeStringRendererTestWidget.cs +++ b/Dalamud/Interface/Internal/Windows/Data/Widgets/SeStringRendererTestWidget.cs @@ -190,7 +190,7 @@ internal unsafe class SeStringRendererTestWidget : IDataWindowWidget var addon = Service.GetNullable()?.GetExcelSheet() ?? throw new InvalidOperationException("Addon sheet not loaded."); - var clipper = new ImGuiListClipperPtr(ImGui.ImGuiListClipper()); + var clipper = ImGui.ImGuiListClipper(); clipper.Begin(addon.Count); while (clipper.Step()) { diff --git a/Dalamud/Interface/Internal/Windows/Data/Widgets/TexWidget.cs b/Dalamud/Interface/Internal/Windows/Data/Widgets/TexWidget.cs index d40544def..027e792ab 100644 --- a/Dalamud/Interface/Internal/Windows/Data/Widgets/TexWidget.cs +++ b/Dalamud/Interface/Internal/Windows/Data/Widgets/TexWidget.cs @@ -449,7 +449,7 @@ internal class TexWidget : IDataWindowWidget sortSpecs.SpecsDirty = false; } - var clipper = new ImGuiListClipperPtr(ImGui.ImGuiListClipper()); + var clipper = ImGui.ImGuiListClipper(); clipper.Begin(allBlames.Count); while (clipper.Step()) @@ -538,7 +538,7 @@ internal class TexWidget : IDataWindowWidget (ImGui.GetStyle().ItemSpacing.X * 1 * numIcons)); ImGui.TableHeadersRow(); - var clipper = new ImGuiListClipperPtr(ImGui.ImGuiListClipper()); + var clipper = ImGui.ImGuiListClipper(); clipper.Begin(textures.Count); using (var enu = textures.GetEnumerator()) diff --git a/Dalamud/Interface/Internal/Windows/Data/Widgets/UIColorWidget.cs b/Dalamud/Interface/Internal/Windows/Data/Widgets/UIColorWidget.cs index 8334db8e9..3f29c5aa0 100644 --- a/Dalamud/Interface/Internal/Windows/Data/Widgets/UIColorWidget.cs +++ b/Dalamud/Interface/Internal/Windows/Data/Widgets/UIColorWidget.cs @@ -64,7 +64,7 @@ internal class UiColorWidget : IDataWindowWidget ImGui.TableSetupColumn("Clear Blue", ImGuiTableColumnFlags.WidthFixed, colorw); ImGui.TableHeadersRow(); - var clipper = new ImGuiListClipperPtr(ImGui.ImGuiListClipper()); + var clipper = ImGui.ImGuiListClipper(); clipper.Begin(colors.Count, ImGui.GetFrameHeightWithSpacing()); while (clipper.Step()) { diff --git a/Dalamud/Interface/Utility/ImGuiClip.cs b/Dalamud/Interface/Utility/ImGuiClip.cs index 73a56d47b..2d3f07b0c 100644 --- a/Dalamud/Interface/Utility/ImGuiClip.cs +++ b/Dalamud/Interface/Utility/ImGuiClip.cs @@ -34,11 +34,7 @@ public static class ImGuiClip // Uses ImGuiListClipper and thus handles start- and end-dummies itself. public static void ClippedDraw(IReadOnlyList data, Action draw, float lineHeight) { - ImGuiListClipperPtr clipper; - unsafe - { - clipper = new ImGuiListClipperPtr(ImGui.ImGuiListClipper()); - } + var clipper = ImGui.ImGuiListClipper(); clipper.Begin(data.Count, lineHeight); while (clipper.Step()) @@ -69,11 +65,7 @@ public static class ImGuiClip /// The type of data to draw. public static void ClippedDraw(IReadOnlyList data, Action draw, int itemsPerLine, float lineHeight) { - ImGuiListClipperPtr clipper; - unsafe - { - clipper = new ImGuiListClipperPtr(ImGui.ImGuiListClipper()); - } + var clipper = ImGui.ImGuiListClipper(); var maxRows = (int)MathF.Ceiling((float)data.Count / itemsPerLine); @@ -113,11 +105,7 @@ public static class ImGuiClip // Uses ImGuiListClipper and thus handles start- and end-dummies itself, but acts on type and index. public static void ClippedDraw(IReadOnlyList data, Action draw, float lineHeight) { - ImGuiListClipperPtr clipper; - unsafe - { - clipper = new ImGuiListClipperPtr(ImGui.ImGuiListClipper()); - } + var clipper = ImGui.ImGuiListClipper(); clipper.Begin(data.Count, lineHeight); while (clipper.Step())