mirror of
https://github.com/xeghosted/OrbisForge.git
synced 2026-10-06 08:00:37 +02:00
Fix dark mode: theme the plain TextBox/CheckBox controls UIFramework can't skin
This commit is contained in:
1 parent
c76d834ace
commit
53b26f0f98
1 file changed
+30
-1
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user