diff --git a/Flow.Launcher.Core/Resource/Theme.cs b/Flow.Launcher.Core/Resource/Theme.cs
index 59e76e2d2..26fbfb1b4 100644
--- a/Flow.Launcher.Core/Resource/Theme.cs
+++ b/Flow.Launcher.Core/Resource/Theme.cs
@@ -324,7 +324,7 @@ namespace Flow.Launcher.Core.Resource
return dict;
}
- private ResourceDictionary GetCurrentResourceDictionary()
+ public ResourceDictionary GetCurrentResourceDictionary()
{
return GetResourceDictionary(_settings.Theme);
}
diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml
index 6d63c41ed..f3a645767 100644
--- a/Flow.Launcher/Languages/en.xaml
+++ b/Flow.Launcher/Languages/en.xaml
@@ -199,6 +199,9 @@
Result Title Font
Result Subtitle Font
Reset
+ Reset to the recommended font and size settings.
+ Import Theme Size
+ If a size value intended by the theme designer is available, it will be retrieved and applied.
Customize
Window Mode
Opacity
diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs
index ee6dfdbe8..7bc186529 100644
--- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs
+++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs
@@ -17,6 +17,7 @@ using Flow.Launcher.Plugin.SharedModels;
using Flow.Launcher.ViewModel;
using ModernWpf;
using ThemeManagerForColorSchemeSwitch = ModernWpf.ThemeManager;
+using System.Windows.Controls;
namespace Flow.Launcher.SettingPages.ViewModels;
@@ -508,5 +509,56 @@ public partial class SettingsPaneThemeViewModel : BaseModel
WindowHeightSize = 42;
ItemHeightSize = 58;
}
-
+
+ [RelayCommand]
+ private void Import()
+ {
+ var resourceDictionary = _theme.GetCurrentResourceDictionary();
+
+ if (resourceDictionary["QueryBoxStyle"] is Style queryBoxStyle)
+ {
+ var fontSizeSetter = queryBoxStyle.Setters
+ .OfType()
+ .FirstOrDefault(setter => setter.Property == TextBox.FontSizeProperty);
+ if (fontSizeSetter?.Value is double fontSize)
+ {
+ QueryBoxFontSize = fontSize;
+ }
+
+ var heightSetter = queryBoxStyle.Setters
+ .OfType()
+ .FirstOrDefault(setter => setter.Property == FrameworkElement.HeightProperty);
+ if (heightSetter?.Value is double height)
+ {
+ WindowHeightSize = height;
+ }
+ }
+
+ if (resourceDictionary["ResultItemHeight"] is double resultItemHeight)
+ {
+ ItemHeightSize = resultItemHeight;
+ }
+
+ if (resourceDictionary["ItemTitleStyle"] is Style itemTitleStyle)
+ {
+ var fontSizeSetter = itemTitleStyle.Setters
+ .OfType()
+ .FirstOrDefault(setter => setter.Property == TextBlock.FontSizeProperty);
+ if (fontSizeSetter?.Value is double fontSize)
+ {
+ ResultItemFontSize = fontSize;
+ }
+ }
+
+ if (resourceDictionary["ItemSubTitleStyle"] is Style itemSubTitleStyle)
+ {
+ var fontSizeSetter = itemSubTitleStyle.Setters
+ .OfType()
+ .FirstOrDefault(setter => setter.Property == TextBlock.FontSizeProperty);
+ if (fontSizeSetter?.Value is double fontSize)
+ {
+ ResultSubItemFontSize = fontSize;
+ }
+ }
+ }
}
diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml
index 1e01354b7..b08d92a69 100644
--- a/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml
+++ b/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml
@@ -256,10 +256,17 @@
BorderThickness="1"
Style="{StaticResource SettingSeparatorStyle}" />
+
+ Content="{DynamicResource resetCustomize}"
+ ToolTip="{DynamicResource resetCustomizeToolTip}" />