mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Refactor brush creation with ThemeHelper utility
Introduce ThemeHelper.GetFreezeSolidColorBrush to centralize and reuse SolidColorBrush creation and freezing logic. Refactor Theme.cs to use this helper, improving code clarity and maintainability. Also, use Brushes.Transparent directly where appropriate.
This commit is contained in:
parent
9abf136ea2
commit
ed14c45fd2
2 changed files with 19 additions and 16 deletions
|
|
@ -674,16 +674,12 @@ namespace Flow.Launcher.Core.Resource
|
|||
if (backdropType == BackdropTypes.Mica || backdropType == BackdropTypes.MicaAlt)
|
||||
{
|
||||
windowBorderStyle.Setters.Remove(windowBorderStyle.Setters.OfType<Setter>().FirstOrDefault(x => x.Property == Control.BackgroundProperty));
|
||||
var brush = new SolidColorBrush(Color.FromArgb(1, 0, 0, 0));
|
||||
brush.Freeze();
|
||||
windowBorderStyle.Setters.Add(new Setter(Border.BackgroundProperty, brush));
|
||||
windowBorderStyle.Setters.Add(new Setter(Border.BackgroundProperty, ThemeHelper.GetFreezeSolidColorBrush(Color.FromArgb(1, 0, 0, 0))));
|
||||
}
|
||||
else if (backdropType == BackdropTypes.Acrylic)
|
||||
{
|
||||
windowBorderStyle.Setters.Remove(windowBorderStyle.Setters.OfType<Setter>().FirstOrDefault(x => x.Property == Control.BackgroundProperty));
|
||||
var brush = new SolidColorBrush(Colors.Transparent);
|
||||
brush.Freeze();
|
||||
windowBorderStyle.Setters.Add(new Setter(Border.BackgroundProperty, brush));
|
||||
windowBorderStyle.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Transparent));
|
||||
}
|
||||
|
||||
// For themes with blur enabled, the window border is rendered by the system, so it's treated as a simple rectangle regardless of thickness.
|
||||
|
|
@ -806,10 +802,8 @@ namespace Flow.Launcher.Core.Resource
|
|||
}
|
||||
|
||||
// Apply background color (remove transparency in color)
|
||||
Color backgroundColor = Color.FromRgb(bgColor.Value.R, bgColor.Value.G, bgColor.Value.B);
|
||||
var brush = new SolidColorBrush(backgroundColor);
|
||||
brush.Freeze();
|
||||
previewStyle.Setters.Add(new Setter(Border.BackgroundProperty, brush));
|
||||
var backgroundColor = Color.FromRgb(bgColor.Value.R, bgColor.Value.G, bgColor.Value.B);
|
||||
previewStyle.Setters.Add(new Setter(Border.BackgroundProperty, ThemeHelper.GetFreezeSolidColorBrush(backgroundColor)));
|
||||
|
||||
// The blur theme keeps the corner round fixed (applying DWM code to modify it causes rendering issues).
|
||||
// The non-blur theme retains the previously set WindowBorderStyle.
|
||||
|
|
@ -923,15 +917,11 @@ namespace Flow.Launcher.Core.Resource
|
|||
// Only set the background to transparent if the theme supports blur
|
||||
if (backdropType == BackdropTypes.Mica || backdropType == BackdropTypes.MicaAlt)
|
||||
{
|
||||
var backgroundBrush = new SolidColorBrush(Color.FromArgb(1, 0, 0, 0));
|
||||
backgroundBrush.Freeze();
|
||||
mainWindow.Background = backgroundBrush;
|
||||
mainWindow.Background = ThemeHelper.GetFreezeSolidColorBrush(Color.FromArgb(1, 0, 0, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
var backgroundBrush = new SolidColorBrush(selectedBG);
|
||||
backgroundBrush.Freeze();
|
||||
mainWindow.Background = backgroundBrush;
|
||||
mainWindow.Background = ThemeHelper.GetFreezeSolidColorBrush(selectedBG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
13
Flow.Launcher.Core/Resource/ThemeHelper.cs
Normal file
13
Flow.Launcher.Core/Resource/ThemeHelper.cs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
using System.Windows.Media;
|
||||
|
||||
namespace Flow.Launcher.Core.Resource;
|
||||
|
||||
public static class ThemeHelper
|
||||
{
|
||||
public static SolidColorBrush GetFreezeSolidColorBrush(Color color)
|
||||
{
|
||||
var brush = new SolidColorBrush(color);
|
||||
brush.Freeze();
|
||||
return brush;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue