From 78efd654e65424bb30724baae0273861e1121893 Mon Sep 17 00:00:00 2001 From: Jon Kazama Date: Sat, 23 May 2026 01:30:41 +0200 Subject: [PATCH] refactor(settings): rebuild the Window tab into three sections --- .../Resources/HellionStrings.Designer.cs | 12 +++++----- HellionChat/Resources/HellionStrings.resx | 22 ++++++++++--------- HellionChat/Ui/SettingsTabs/Window.cs | 21 ++++++++++-------- 3 files changed, 30 insertions(+), 25 deletions(-) diff --git a/HellionChat/Resources/HellionStrings.Designer.cs b/HellionChat/Resources/HellionStrings.Designer.cs index 1851aa7..adff707 100644 --- a/HellionChat/Resources/HellionStrings.Designer.cs +++ b/HellionChat/Resources/HellionStrings.Designer.cs @@ -286,9 +286,7 @@ internal class HellionStrings internal static string Settings_Appearance_Colours_Heading => Get(nameof(Settings_Appearance_Colours_Heading)); internal static string Settings_Appearance_Timestamps_Heading => Get(nameof(Settings_Appearance_Timestamps_Heading)); - // Hellion Chat — Window-Tab section headings - internal static string Settings_Window_Hide_Heading => Get(nameof(Settings_Window_Hide_Heading)); - internal static string Settings_Window_InactivityHide_Heading => Get(nameof(Settings_Window_InactivityHide_Heading)); + // Hellion Chat — Window-Tab section headings (pre-cycle legacy, kept for reference) internal static string Settings_Window_Frame_Heading => Get(nameof(Settings_Window_Frame_Heading)); // Hellion Chat — Chat-Tab SymbolPicker @@ -382,9 +380,6 @@ internal class HellionStrings internal static string Settings_DataManagement_DbViewer_Heading => Get(nameof(Settings_DataManagement_DbViewer_Heading)); internal static string Settings_DataManagement_Advanced_Heading => Get(nameof(Settings_DataManagement_Advanced_Heading)); - // Hellion Chat — v1.2.1 Window-tab Behaviour heading (replaces Frame heading) - internal static string Settings_Window_Frame_Behaviour_Heading => Get(nameof(Settings_Window_Frame_Behaviour_Heading)); - // Hellion Chat — v1.2.1 Migration v15 → v16 toast internal static string Migration_v16_OverrideStyle_Toast => Get(nameof(Migration_v16_OverrideStyle_Toast)); @@ -497,4 +492,9 @@ internal class HellionStrings internal static string Settings_Section_WindowStyle => Get(nameof(Settings_Section_WindowStyle)); internal static string Settings_Section_Timestamps => Get(nameof(Settings_Section_Timestamps)); internal static string Settings_Section_Animations => Get(nameof(Settings_Section_Animations)); + + // v1.5.6: Window tab collapsible section titles (R6) + internal static string Settings_Section_Hide => Get(nameof(Settings_Section_Hide)); + internal static string Settings_Section_InactivityHide => Get(nameof(Settings_Section_InactivityHide)); + internal static string Settings_Section_Frame => Get(nameof(Settings_Section_Frame)); } diff --git a/HellionChat/Resources/HellionStrings.resx b/HellionChat/Resources/HellionStrings.resx index b3bec84..83f049a 100644 --- a/HellionChat/Resources/HellionStrings.resx +++ b/HellionChat/Resources/HellionStrings.resx @@ -610,13 +610,7 @@ Timestamps - - - Hiding - - - Inactivity hiding - + Window frame @@ -881,9 +875,6 @@ Advanced (Shift+click to open) - - Behaviour - Hellion Chat 1.2.1 has reorganised the settings menu and removed the old "Override style" option (superseded by the theme system from 1.1.0). Your remaining settings are unchanged. Window transparency has been migrated to "Theme & Layout". A backup of the previous config is located at pluginConfigs/HellionChat.json.pre-v16-backup next to the active HellionChat.json. @@ -1156,4 +1147,15 @@ Animations + + + + Hide + + + Hide when inactive + + + Frame + diff --git a/HellionChat/Ui/SettingsTabs/Window.cs b/HellionChat/Ui/SettingsTabs/Window.cs index 6bee1ad..58056d3 100644 --- a/HellionChat/Ui/SettingsTabs/Window.cs +++ b/HellionChat/Ui/SettingsTabs/Window.cs @@ -20,16 +20,17 @@ internal sealed class Window : ISettingsTab public void Draw(bool sectionJustEntered) { - DrawHideSection(); + DrawHideSection(sectionJustEntered); ImGui.Spacing(); - DrawInactivityHideSection(); + DrawInactivityHideSection(sectionJustEntered); ImGui.Spacing(); - DrawFrameSection(); + DrawFrameSection(sectionJustEntered); } - private void DrawHideSection() + private void DrawHideSection(bool sectionJustEntered) { - using var tree = ImRaii.TreeNode(HellionStrings.Settings_Window_Hide_Heading); + if (sectionJustEntered) ImGui.SetNextItemOpen(false); + using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Hide); if (!tree.Success) { return; @@ -80,9 +81,10 @@ internal sealed class Window : ISettingsTab } } - private void DrawInactivityHideSection() + private void DrawInactivityHideSection(bool sectionJustEntered) { - using var tree = ImRaii.TreeNode(HellionStrings.Settings_Window_InactivityHide_Heading); + if (sectionJustEntered) ImGui.SetNextItemOpen(false); + using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_InactivityHide); if (!tree.Success) { return; @@ -162,9 +164,10 @@ internal sealed class Window : ISettingsTab } } - private void DrawFrameSection() + private void DrawFrameSection(bool sectionJustEntered) { - using var tree = ImRaii.TreeNode(HellionStrings.Settings_Window_Frame_Behaviour_Heading); + if (sectionJustEntered) ImGui.SetNextItemOpen(false); + using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Frame); if (!tree.Success) { return;