From 4778f5673f727ba053bbb82e542e823d239b7494 Mon Sep 17 00:00:00 2001 From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com> Date: Wed, 24 Dec 2025 23:59:08 +0100 Subject: [PATCH] Pass theme properties to web plugin --- src/DesktopMagic/Helpers/ColorConverter.cs | 14 ++++++-- src/DesktopMagic/Plugins/WebPluginWindow.xaml | 2 +- .../Plugins/WebPluginWindow.xaml.cs | 32 +++++++++++++++++++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/DesktopMagic/Helpers/ColorConverter.cs b/src/DesktopMagic/Helpers/ColorConverter.cs index e2c337b..667de56 100644 --- a/src/DesktopMagic/Helpers/ColorConverter.cs +++ b/src/DesktopMagic/Helpers/ColorConverter.cs @@ -6,16 +6,26 @@ namespace DesktopMagic.Helpers; internal static partial class MultiColorConverter { - public static string ConvertToHex(System.Drawing.Color color) + public static string ConvertToHexArgb(System.Drawing.Color color) { return $"#{color.A:X2}{color.R:X2}{color.G:X2}{color.B:X2}"; } - public static string ConvertToHex(System.Windows.Media.Color color) + public static string ConvertToHexArgb(System.Windows.Media.Color color) { return $"#{color.A:X2}{color.R:X2}{color.G:X2}{color.B:X2}"; } + public static string ConvertToHexRgba(System.Drawing.Color color) + { + return $"#{color.R:X2}{color.G:X2}{color.B:X2}{color.A:X2}"; + } + + public static string ConvertToHexRgba(System.Windows.Media.Color color) + { + return $"#{color.R:X2}{color.G:X2}{color.B:X2}{color.A:X2}"; + } + public static bool TryConvertToSystemColor(string hex, out System.Drawing.Color color) { hex = hex.Replace("#", ""); diff --git a/src/DesktopMagic/Plugins/WebPluginWindow.xaml b/src/DesktopMagic/Plugins/WebPluginWindow.xaml index 51f3061..930916f 100644 --- a/src/DesktopMagic/Plugins/WebPluginWindow.xaml +++ b/src/DesktopMagic/Plugins/WebPluginWindow.xaml @@ -21,7 +21,7 @@ - + diff --git a/src/DesktopMagic/Plugins/WebPluginWindow.xaml.cs b/src/DesktopMagic/Plugins/WebPluginWindow.xaml.cs index 965be24..b2b85f5 100644 --- a/src/DesktopMagic/Plugins/WebPluginWindow.xaml.cs +++ b/src/DesktopMagic/Plugins/WebPluginWindow.xaml.cs @@ -129,8 +129,35 @@ public partial class WebPluginWindow : Window, IPluginWindow private void ThemeChanged() { + webView.Margin = new Thickness(settings.Theme.Margin); border.Background = new SolidColorBrush(MultiColorConverter.ConvertToMediaColor(settings.Theme.BackgroundColor)); border.CornerRadius = new CornerRadius(settings.Theme.CornerRadius); + + string cssVariables = $@" + :root {{ + --background-color: {MultiColorConverter.ConvertToHexRgba(settings.Theme.BackgroundColor)}; + --primary-color: {MultiColorConverter.ConvertToHexRgba(settings.Theme.PrimaryColor)}; + --secondary-color: {MultiColorConverter.ConvertToHexRgba(settings.Theme.SecondaryColor)}; + --font-family: {settings.Theme.Font}; + + font-family: {settings.Theme.Font}; + color: {MultiColorConverter.ConvertToHexRgba(settings.Theme.PrimaryColor)}; + }} + "; + + string script = $@" + (function() {{ + let style = document.getElementById('desktop-magic-theme'); + if (!style) {{ + style = document.createElement('style'); + style.id = 'desktop-magic-theme'; + document.head.appendChild(style); + }} + style.textContent = `{cssVariables}`; + }})(); + "; + + _ = webView.ExecuteScriptAsync(script); } private async System.Threading.Tasks.Task InitializeWebView() @@ -202,4 +229,9 @@ public partial class WebPluginWindow : Window, IPluginWindow tileBar.CaptionHeight = ActualHeight - 10; } + + private void webView_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e) + { + webView.CoreWebView2.DOMContentLoaded += (_, _) => ThemeChanged(); + } }