diff --git a/src/OrbisForge.Gui/WizardForm.cs b/src/OrbisForge.Gui/WizardForm.cs index 3e5d084..f99c460 100644 --- a/src/OrbisForge.Gui/WizardForm.cs +++ b/src/OrbisForge.Gui/WizardForm.cs @@ -47,10 +47,15 @@ namespace OrbisForge.Gui _darkModeCheck.Text = "Dark mode"; _darkModeCheck.AutoSize = true; + _darkModeCheck.FlatStyle = FlatStyle.Flat; _darkModeCheck.Anchor = AnchorStyles.Top | AnchorStyles.Right; _darkModeCheck.Location = new Point(ClientSize.Width - 110, y); _darkModeCheck.Checked = GuiSettings.LoadDarkMode(); - _darkModeCheck.CheckedChanged += (s, e) => ApplyTheme(_darkModeCheck.Checked, save: true); + _darkModeCheck.CheckedChanged += (s, e) => + { + ApplyTheme(_darkModeCheck.Checked, save: true); + RefreshPlainControlColors(); + }; root.Controls.Add(_darkModeCheck); ApplyTheme(_darkModeCheck.Checked, save: false); @@ -84,11 +89,13 @@ namespace OrbisForge.Gui _pkgCheck.Text = "Also generate full .pkg installer (EXE only)"; _pkgCheck.Location = new Point(left, y); _pkgCheck.AutoSize = true; + _pkgCheck.FlatStyle = FlatStyle.Flat; y += 28; _deployCheck.Text = "Deploy to PS4 via FTP after build"; _deployCheck.Location = new Point(left, y); _deployCheck.AutoSize = true; + _deployCheck.FlatStyle = FlatStyle.Flat; _deployCheck.CheckedChanged += (s, e) => UpdateDeployFieldsEnabled(); y += 24; @@ -149,6 +156,7 @@ namespace OrbisForge.Gui UpdatePkgCheckEnabled(); UpdateDeployFieldsEnabled(); + RefreshPlainControlColors(); Shown += (s, e) => DetectEnvironment(); } @@ -158,6 +166,27 @@ namespace OrbisForge.Gui if (save) GuiSettings.SaveDarkMode(dark); } + // _statusBox and the CheckBoxes are plain WinForms controls -- UIFramework has no + // skinned equivalents for them (no multiline/scrollable SkinTextBox variant, no + // SkinCheckBox at all) -- so they don't auto-repaint on a skin change like every + // other control here does. Left at their WinForms defaults, they stay bright white + // regardless of the active skin, which looks broken next to a dark-themed form. + private void RefreshPlainControlColors() + { + var textAppearance = SkinManager.Current.GetAppearance(ElementKeys.TextBox, ElementState.Normal); + _statusBox.BackColor = textAppearance.Background; + _statusBox.ForeColor = textAppearance.ForeColor; + + var panelAppearance = SkinManager.Current.GetAppearance(ElementKeys.Panel, ElementState.Normal); + var labelAppearance = SkinManager.Current.GetAppearance(ElementKeys.Label, ElementState.Normal); + foreach (var checkBox in new[] { _pkgCheck, _deployCheck, _darkModeCheck }) + { + checkBox.UseVisualStyleBackColor = false; + checkBox.BackColor = panelAppearance.Background; + checkBox.ForeColor = labelAppearance.ForeColor; + } + } + private void UpdatePkgCheckEnabled() { bool isExe = SelectedType() == OrbisTargetType.Exe;