From abcd0847ef6fdb2d0f85e10abbbf5c28b8dced94 Mon Sep 17 00:00:00 2001 From: JonKazama-Hellion Date: Tue, 5 May 2026 14:22:23 +0200 Subject: [PATCH] fix(settings): restore cursor after card draw to keep grid layout intact --- HellionChat/Ui/SettingsOverview.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/HellionChat/Ui/SettingsOverview.cs b/HellionChat/Ui/SettingsOverview.cs index 9715bbe..9837b53 100644 --- a/HellionChat/Ui/SettingsOverview.cs +++ b/HellionChat/Ui/SettingsOverview.cs @@ -60,6 +60,13 @@ internal sealed class SettingsOverview var draw = ImGui.GetWindowDrawList(); draw.AddRectFilled(cursorBefore, cursorBefore + new Vector2(w, h), bgColor, 4f); + // ImGui hat den Cursor nach dem InvisibleButton bereits korrekt + // weitergesetzt (für die Layout-Engine). Wir merken uns die Position, + // verschieben den Cursor temporär für die Inhalts-Beschriftung und + // restoren ihn am Ende — sonst kollidieren manuelle Cursor-Sets mit + // SameLine im Caller und die Cards stapeln sich diagonal. + var cursorAfterButton = ImGui.GetCursorScreenPos(); + var textPos = cursorBefore + new Vector2(16f, 12f); ImGui.SetCursorScreenPos(textPos); // Plugin ist hier Instanz, nicht Static-Type — daher über _window @@ -79,8 +86,9 @@ internal sealed class SettingsOverview ImGui.TextUnformatted(subtext); } - // Cursor unter die Card setzen für nächsten Item-Pass - ImGui.SetCursorScreenPos(cursorBefore + new Vector2(0f, h + 8f)); + // Restore cursor to post-button position, so SameLine + Wrap im Caller + // wieder mit dem ImGui-Layout-Flow arbeiten. + ImGui.SetCursorScreenPos(cursorAfterButton); if (clicked) {