From 0244d86a370bcb5de422d3de831addb1b755db56 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Thu, 29 May 2025 15:17:47 +0800 Subject: [PATCH 01/25] Make converters be public --- Flow.Launcher/Converters/BoolToIMEConversionModeConverter.cs | 4 ++-- Flow.Launcher/Converters/StringToKeyBindingConverter.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Flow.Launcher/Converters/BoolToIMEConversionModeConverter.cs b/Flow.Launcher/Converters/BoolToIMEConversionModeConverter.cs index 41e87991317..82da6d936b3 100644 --- a/Flow.Launcher/Converters/BoolToIMEConversionModeConverter.cs +++ b/Flow.Launcher/Converters/BoolToIMEConversionModeConverter.cs @@ -5,7 +5,7 @@ namespace Flow.Launcher.Converters; -internal class BoolToIMEConversionModeConverter : IValueConverter +public class BoolToIMEConversionModeConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { @@ -22,7 +22,7 @@ public object ConvertBack(object value, Type targetType, object parameter, Cultu } } -internal class BoolToIMEStateConverter : IValueConverter +public class BoolToIMEStateConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { diff --git a/Flow.Launcher/Converters/StringToKeyBindingConverter.cs b/Flow.Launcher/Converters/StringToKeyBindingConverter.cs index 21bf584e7a9..b7bca41c54e 100644 --- a/Flow.Launcher/Converters/StringToKeyBindingConverter.cs +++ b/Flow.Launcher/Converters/StringToKeyBindingConverter.cs @@ -5,7 +5,7 @@ namespace Flow.Launcher.Converters; -class StringToKeyBindingConverter : IValueConverter +public class StringToKeyBindingConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { From 647a1c770e48567f265d3b267854abd5d973afc1 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Thu, 29 May 2025 15:18:04 +0800 Subject: [PATCH 02/25] Add converters from ModernWPF --- .../Converters/CornerRadiusFilterConverter.cs | 91 +++++++++++++++++++ .../Converters/PlacementRectangleConverter.cs | 32 +++++++ .../Converters/SharedSizeGroupConverter.cs | 19 ++++ 3 files changed, 142 insertions(+) create mode 100644 Flow.Launcher/Converters/CornerRadiusFilterConverter.cs create mode 100644 Flow.Launcher/Converters/PlacementRectangleConverter.cs create mode 100644 Flow.Launcher/Converters/SharedSizeGroupConverter.cs diff --git a/Flow.Launcher/Converters/CornerRadiusFilterConverter.cs b/Flow.Launcher/Converters/CornerRadiusFilterConverter.cs new file mode 100644 index 00000000000..fd43cafacac --- /dev/null +++ b/Flow.Launcher/Converters/CornerRadiusFilterConverter.cs @@ -0,0 +1,91 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace Flow.Launcher.Converters; + +public class CornerRadiusFilterConverter : DependencyObject, IValueConverter +{ + public CornerRadiusFilterKind Filter { get; set; } + + public double Scale { get; set; } = 1.0; + + public static CornerRadius Convert(CornerRadius radius, CornerRadiusFilterKind filterKind) + { + CornerRadius result = radius; + + switch (filterKind) + { + case CornerRadiusFilterKind.Top: + result.BottomLeft = 0; + result.BottomRight = 0; + break; + case CornerRadiusFilterKind.Right: + result.TopLeft = 0; + result.BottomLeft = 0; + break; + case CornerRadiusFilterKind.Bottom: + result.TopLeft = 0; + result.TopRight = 0; + break; + case CornerRadiusFilterKind.Left: + result.TopRight = 0; + result.BottomRight = 0; + break; + } + + return result; + } + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + var cornerRadius = (CornerRadius)value; + + var scale = Scale; + if (!double.IsNaN(scale)) + { + cornerRadius.TopLeft *= scale; + cornerRadius.TopRight *= scale; + cornerRadius.BottomRight *= scale; + cornerRadius.BottomLeft *= scale; + } + + var filterType = Filter; + if (filterType == CornerRadiusFilterKind.TopLeftValue || + filterType == CornerRadiusFilterKind.BottomRightValue) + { + return GetDoubleValue(cornerRadius, filterType); + } + + return Convert(cornerRadius, filterType); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + + private static double GetDoubleValue(CornerRadius radius, CornerRadiusFilterKind filterKind) + { + switch (filterKind) + { + case CornerRadiusFilterKind.TopLeftValue: + return radius.TopLeft; + case CornerRadiusFilterKind.BottomRightValue: + return radius.BottomRight; + } + return 0; + } +} + +public enum CornerRadiusFilterKind +{ + None, + Top, + Right, + Bottom, + Left, + TopLeftValue, + BottomRightValue +} diff --git a/Flow.Launcher/Converters/PlacementRectangleConverter.cs b/Flow.Launcher/Converters/PlacementRectangleConverter.cs new file mode 100644 index 00000000000..130d04e160e --- /dev/null +++ b/Flow.Launcher/Converters/PlacementRectangleConverter.cs @@ -0,0 +1,32 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace Flow.Launcher.Converters; + +public class PlacementRectangleConverter : IMultiValueConverter +{ + public Thickness Margin { get; set; } + + public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) + { + if (values.Length == 2 && + values[0] is double width && + values[1] is double height) + { + var margin = Margin; + var topLeft = new Point(margin.Left, margin.Top); + var bottomRight = new Point(width - margin.Right, height - margin.Bottom); + var rect = new Rect(topLeft, bottomRight); + return rect; + } + + return Rect.Empty; + } + + public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/Flow.Launcher/Converters/SharedSizeGroupConverter.cs b/Flow.Launcher/Converters/SharedSizeGroupConverter.cs new file mode 100644 index 00000000000..59478702749 --- /dev/null +++ b/Flow.Launcher/Converters/SharedSizeGroupConverter.cs @@ -0,0 +1,19 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace Flow.Launcher.Converters; + +public class SharedSizeGroupConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + return (Visibility)value != Visibility.Collapsed ? (string)parameter : null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} From aefce9f1a5092a9f85023131d6f622c68231b52e Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Thu, 29 May 2025 15:18:14 +0800 Subject: [PATCH 03/25] Add helper from ModernWPF --- Flow.Launcher/Helper/BorderHelper.cs | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Flow.Launcher/Helper/BorderHelper.cs diff --git a/Flow.Launcher/Helper/BorderHelper.cs b/Flow.Launcher/Helper/BorderHelper.cs new file mode 100644 index 00000000000..0f2a78e7dd6 --- /dev/null +++ b/Flow.Launcher/Helper/BorderHelper.cs @@ -0,0 +1,33 @@ +using System.Windows; +using System.Windows.Controls; + +namespace Flow.Launcher.Helper; + +public static class BorderHelper +{ + #region Child + + public static readonly DependencyProperty ChildProperty = + DependencyProperty.RegisterAttached( + "Child", + typeof(UIElement), + typeof(BorderHelper), + new PropertyMetadata(default(UIElement), OnChildChanged)); + + public static UIElement GetChild(Border border) + { + return (UIElement)border.GetValue(ChildProperty); + } + + public static void SetChild(Border border, UIElement value) + { + border.SetValue(ChildProperty, value); + } + + private static void OnChildChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + ((Border)d).Child = (UIElement)e.NewValue; + } + + #endregion +} From 6ef2022293892d7b0db624dbcc15ba60da4528c0 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Thu, 29 May 2025 15:41:49 +0800 Subject: [PATCH 04/25] Use iNKORE.UI.WPF.Modern package --- Flow.Launcher/App.xaml | 2 +- Flow.Launcher/Flow.Launcher.csproj | 4 +--- Flow.Launcher/HotkeyControlDialog.xaml | 2 +- Flow.Launcher/HotkeyControlDialog.xaml.cs | 2 +- Flow.Launcher/MainWindow.xaml | 2 +- Flow.Launcher/MainWindow.xaml.cs | 15 +++++++------ Flow.Launcher/Resources/Controls/Card.xaml | 2 +- Flow.Launcher/Resources/Controls/ExCard.xaml | 2 +- Flow.Launcher/Resources/Controls/InfoBar.xaml | 2 +- .../Controls/InstalledPluginDisplay.xaml | 2 +- .../Controls/InstalledPluginDisplay.xaml.cs | 2 +- .../Resources/CustomControlTemplate.xaml | 18 ++++++++------- Flow.Launcher/Resources/Dark.xaml | 22 +++++++++---------- Flow.Launcher/Resources/Light.xaml | 22 +++++++++---------- .../Resources/Pages/WelcomePage1.xaml | 2 +- .../Resources/Pages/WelcomePage2.xaml | 2 +- .../Resources/Pages/WelcomePage3.xaml | 2 +- .../Resources/Pages/WelcomePage4.xaml | 2 +- .../Resources/Pages/WelcomePage5.xaml | 2 +- Flow.Launcher/SelectBrowserWindow.xaml | 2 +- Flow.Launcher/SelectFileManagerWindow.xaml | 2 +- .../SettingsPanePluginsViewModel.cs | 2 +- .../ViewModels/SettingsPaneThemeViewModel.cs | 7 +++--- .../SettingPages/Views/SettingsPaneAbout.xaml | 2 +- .../Views/SettingsPaneGeneral.xaml | 2 +- .../Views/SettingsPaneHotkey.xaml | 2 +- .../Views/SettingsPanePluginStore.xaml | 2 +- .../Views/SettingsPanePlugins.xaml | 2 +- .../SettingPages/Views/SettingsPaneProxy.xaml | 2 +- .../SettingPages/Views/SettingsPaneTheme.xaml | 2 +- Flow.Launcher/SettingWindow.xaml | 2 +- Flow.Launcher/SettingWindow.xaml.cs | 2 +- Flow.Launcher/Themes/Circle System.xaml | 2 +- Flow.Launcher/Themes/Win10System.xaml | 2 +- Flow.Launcher/Themes/Win11Light.xaml | 2 +- Flow.Launcher/WelcomeWindow.xaml | 2 +- Flow.Launcher/WelcomeWindow.xaml.cs | 2 +- .../Views/ExplorerSettings.xaml | 2 +- .../ProgramSuffixes.xaml | 2 +- 39 files changed, 77 insertions(+), 77 deletions(-) diff --git a/Flow.Launcher/App.xaml b/Flow.Launcher/App.xaml index 565bbe3c74c..30df7bb140e 100644 --- a/Flow.Launcher/App.xaml +++ b/Flow.Launcher/App.xaml @@ -2,7 +2,7 @@ x:Class="Flow.Launcher.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:ui="http://schemas.modernwpf.com/2019" + xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" ShutdownMode="OnMainWindowClose" Startup="OnStartup"> diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj index 8d43eff9870..7ddf3cf517f 100644 --- a/Flow.Launcher/Flow.Launcher.csproj +++ b/Flow.Launcher/Flow.Launcher.csproj @@ -89,14 +89,12 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + - - - all diff --git a/Flow.Launcher/HotkeyControlDialog.xaml b/Flow.Launcher/HotkeyControlDialog.xaml index 1edce6d0634..7308984b83d 100644 --- a/Flow.Launcher/HotkeyControlDialog.xaml +++ b/Flow.Launcher/HotkeyControlDialog.xaml @@ -2,7 +2,7 @@ x:Class="Flow.Launcher.HotkeyControlDialog" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:ui="http://schemas.modernwpf.com/2019" + xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" Background="{DynamicResource PopuBGColor}" BorderBrush="{DynamicResource PopupButtonAreaBorderColor}" BorderThickness="0 1 0 0" diff --git a/Flow.Launcher/HotkeyControlDialog.xaml.cs b/Flow.Launcher/HotkeyControlDialog.xaml.cs index c7af8c5b8bb..0f772ea444a 100644 --- a/Flow.Launcher/HotkeyControlDialog.xaml.cs +++ b/Flow.Launcher/HotkeyControlDialog.xaml.cs @@ -9,7 +9,7 @@ using Flow.Launcher.Infrastructure.Hotkey; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin; -using ModernWpf.Controls; +using iNKORE.UI.WPF.Modern.Controls; namespace Flow.Launcher; diff --git a/Flow.Launcher/MainWindow.xaml b/Flow.Launcher/MainWindow.xaml index 31bc2ba5046..4f2ae4e9741 100644 --- a/Flow.Launcher/MainWindow.xaml +++ b/Flow.Launcher/MainWindow.xaml @@ -6,7 +6,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:flowlauncher="clr-namespace:Flow.Launcher" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ui="http://schemas.modernwpf.com/2019" + xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" xmlns:vm="clr-namespace:Flow.Launcher.ViewModel" Name="FlowMainWindow" Title="Flow Launcher" diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index bb29d78e5e8..7f29f3e39e4 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -22,8 +22,9 @@ using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin.SharedCommands; using Flow.Launcher.ViewModel; +using iNKORE.UI.WPF.Modern; +using iNKORE.UI.WPF.Modern.Controls; using Microsoft.Win32; -using ModernWpf.Controls; using DataObject = System.Windows.DataObject; using Key = System.Windows.Input.Key; using MouseButtons = System.Windows.Forms.MouseButtons; @@ -89,7 +90,7 @@ public MainWindow() InitSoundEffects(); DataObject.AddPastingHandler(QueryTextBox, QueryTextBox_OnPaste); - ModernWpf.ThemeManager.Current.ActualApplicationThemeChanged += ThemeManager_ActualApplicationThemeChanged; + ThemeManager.Current.ActualApplicationThemeChanged += ThemeManager_ActualApplicationThemeChanged; SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; } @@ -99,9 +100,9 @@ public MainWindow() #pragma warning disable VSTHRD100 // Avoid async void methods - private void ThemeManager_ActualApplicationThemeChanged(ModernWpf.ThemeManager sender, object args) + private void ThemeManager_ActualApplicationThemeChanged(ThemeManager sender, object args) { - _theme.RefreshFrameAsync(); + _ = _theme.RefreshFrameAsync(); } private void OnSourceInitialized(object sender, EventArgs e) @@ -161,11 +162,11 @@ private void OnLoaded(object sender, RoutedEventArgs _) // Initialize color scheme if (_settings.ColorScheme == Constant.Light) { - ModernWpf.ThemeManager.Current.ApplicationTheme = ModernWpf.ApplicationTheme.Light; + ThemeManager.Current.ApplicationTheme = ApplicationTheme.Light; } else if (_settings.ColorScheme == Constant.Dark) { - ModernWpf.ThemeManager.Current.ApplicationTheme = ModernWpf.ApplicationTheme.Dark; + ThemeManager.Current.ApplicationTheme = ApplicationTheme.Dark; } // Initialize position @@ -1257,7 +1258,7 @@ protected virtual void Dispose(bool disposing) _notifyIcon?.Dispose(); animationSoundWMP?.Close(); animationSoundWPF?.Dispose(); - ModernWpf.ThemeManager.Current.ActualApplicationThemeChanged -= ThemeManager_ActualApplicationThemeChanged; + ThemeManager.Current.ActualApplicationThemeChanged -= ThemeManager_ActualApplicationThemeChanged; SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; } diff --git a/Flow.Launcher/Resources/Controls/Card.xaml b/Flow.Launcher/Resources/Controls/Card.xaml index 33c1299a9c3..54d1474dd29 100644 --- a/Flow.Launcher/Resources/Controls/Card.xaml +++ b/Flow.Launcher/Resources/Controls/Card.xaml @@ -6,7 +6,7 @@ xmlns:local="clr-namespace:Flow.Launcher.Resources.Controls" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:sys="clr-namespace:System;assembly=mscorlib" - xmlns:ui="http://schemas.modernwpf.com/2019" + xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> diff --git a/Flow.Launcher/Resources/Controls/ExCard.xaml b/Flow.Launcher/Resources/Controls/ExCard.xaml index a70c0f4ea46..857bf719dde 100644 --- a/Flow.Launcher/Resources/Controls/ExCard.xaml +++ b/Flow.Launcher/Resources/Controls/ExCard.xaml @@ -6,7 +6,7 @@ xmlns:local="clr-namespace:Flow.Launcher.Resources.Controls" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:sys="clr-namespace:System;assembly=mscorlib" - xmlns:ui="http://schemas.modernwpf.com/2019" + xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" mc:Ignorable="d"> diff --git a/Flow.Launcher/Resources/Controls/InfoBar.xaml b/Flow.Launcher/Resources/Controls/InfoBar.xaml index 2ddcbdd0cc8..df75a75da7a 100644 --- a/Flow.Launcher/Resources/Controls/InfoBar.xaml +++ b/Flow.Launcher/Resources/Controls/InfoBar.xaml @@ -5,7 +5,7 @@ xmlns:cc="clr-namespace:Flow.Launcher.Resources.Controls" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ui="http://schemas.modernwpf.com/2019" + xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" d:DesignHeight="45" d:DesignWidth="400" mc:Ignorable="d"> diff --git a/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml b/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml index 0842a64f345..3f197296d29 100644 --- a/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml +++ b/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml @@ -6,7 +6,7 @@ xmlns:converters="clr-namespace:Flow.Launcher.Converters" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ui="http://schemas.modernwpf.com/2019" + xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" xmlns:viewModel="clr-namespace:Flow.Launcher.ViewModel" d:DataContext="{d:DesignInstance viewModel:PluginViewModel}" d:DesignHeight="300" diff --git a/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml.cs b/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml.cs index a27a007823c..20e60e89fb5 100644 --- a/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml.cs +++ b/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml.cs @@ -1,4 +1,4 @@ -using ModernWpf.Controls; +using iNKORE.UI.WPF.Modern.Controls; namespace Flow.Launcher.Resources.Controls; diff --git a/Flow.Launcher/Resources/CustomControlTemplate.xaml b/Flow.Launcher/Resources/CustomControlTemplate.xaml index 08b239c4159..075ba51b35e 100644 --- a/Flow.Launcher/Resources/CustomControlTemplate.xaml +++ b/Flow.Launcher/Resources/CustomControlTemplate.xaml @@ -1,8 +1,10 @@  + xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"> Segoe UI @@ -474,8 +476,8 @@ - + - + @@ -5169,13 +5169,13 @@ - - + - + - + diff --git a/Flow.Launcher/Resources/Pages/WelcomePage1.xaml b/Flow.Launcher/Resources/Pages/WelcomePage1.xaml index 620350ec9a9..f30e1a354b5 100644 --- a/Flow.Launcher/Resources/Pages/WelcomePage1.xaml +++ b/Flow.Launcher/Resources/Pages/WelcomePage1.xaml @@ -99,7 +99,7 @@ - + @@ -185,5 +185,5 @@ - + diff --git a/Flow.Launcher/Resources/Pages/WelcomePage2.xaml b/Flow.Launcher/Resources/Pages/WelcomePage2.xaml index aed325e123a..1c700b304f2 100644 --- a/Flow.Launcher/Resources/Pages/WelcomePage2.xaml +++ b/Flow.Launcher/Resources/Pages/WelcomePage2.xaml @@ -34,7 +34,7 @@ - + @@ -121,5 +121,5 @@ - + diff --git a/Flow.Launcher/Resources/Pages/WelcomePage3.xaml b/Flow.Launcher/Resources/Pages/WelcomePage3.xaml index 5be0fa6e6a4..0086ead7f18 100644 --- a/Flow.Launcher/Resources/Pages/WelcomePage3.xaml +++ b/Flow.Launcher/Resources/Pages/WelcomePage3.xaml @@ -40,7 +40,7 @@ FontSize="20" FontWeight="SemiBold" Text="{DynamicResource Welcome_Page3_Title}" /> - - + diff --git a/Flow.Launcher/Resources/Pages/WelcomePage4.xaml b/Flow.Launcher/Resources/Pages/WelcomePage4.xaml index 1ed00dd8fef..9e725e7c148 100644 --- a/Flow.Launcher/Resources/Pages/WelcomePage4.xaml +++ b/Flow.Launcher/Resources/Pages/WelcomePage4.xaml @@ -54,7 +54,7 @@ - + @@ -132,5 +132,5 @@ - + diff --git a/Flow.Launcher/Resources/Pages/WelcomePage5.xaml b/Flow.Launcher/Resources/Pages/WelcomePage5.xaml index 338b68de604..5b3e40351ba 100644 --- a/Flow.Launcher/Resources/Pages/WelcomePage5.xaml +++ b/Flow.Launcher/Resources/Pages/WelcomePage5.xaml @@ -49,7 +49,7 @@ - + @@ -118,5 +118,5 @@ - + diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml index 3d7cbd2896b..8690c96d8c8 100644 --- a/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml +++ b/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml @@ -17,7 +17,7 @@ - - + diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml index 3d63eb3d61b..5238b12bef2 100644 --- a/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml +++ b/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml @@ -18,7 +18,7 @@ - - + diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneHotkey.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneHotkey.xaml index d85ec322e5c..90ed017f66d 100644 --- a/Flow.Launcher/SettingPages/Views/SettingsPaneHotkey.xaml +++ b/Flow.Launcher/SettingPages/Views/SettingsPaneHotkey.xaml @@ -14,7 +14,7 @@ d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> - - + diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneProxy.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneProxy.xaml index 8ecbc0a7515..2c9bca81c39 100644 --- a/Flow.Launcher/SettingPages/Views/SettingsPaneProxy.xaml +++ b/Flow.Launcher/SettingPages/Views/SettingsPaneProxy.xaml @@ -16,7 +16,7 @@ - - + diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml index b5b4362b178..15aca083b6d 100644 --- a/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml +++ b/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml @@ -23,7 +23,7 @@ - - @@ -268,7 +268,7 @@ Content="{DynamicResource resetCustomize}" ToolTip="{DynamicResource resetCustomizeToolTip}" /> - + @@ -782,5 +782,5 @@ Text="{DynamicResource howToCreateTheme}" Uri="{Binding LinkHowToCreateTheme}" /> - + diff --git a/Flow.Launcher/Themes/Base.xaml b/Flow.Launcher/Themes/Base.xaml index 1844e25be37..cb98d6b06a0 100644 --- a/Flow.Launcher/Themes/Base.xaml +++ b/Flow.Launcher/Themes/Base.xaml @@ -2,6 +2,7 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib" + xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" xmlns:userSettings="clr-namespace:Flow.Launcher.Infrastructure.UserSettings;assembly=Flow.Launcher.Infrastructure"> 0 0 @@ -46,20 +47,20 @@ BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True"> - - + - - + + @@ -246,8 +247,8 @@ - - + + - + - + From 17ac4dfe1ff27df17483c52399646ed6ff2100df Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sat, 31 May 2025 15:00:04 +0800 Subject: [PATCH 06/25] Remove blank lines --- Flow.Launcher/SettingWindow.xaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/Flow.Launcher/SettingWindow.xaml b/Flow.Launcher/SettingWindow.xaml index ba2e80e165b..9bc3d496ed3 100644 --- a/Flow.Launcher/SettingWindow.xaml +++ b/Flow.Launcher/SettingWindow.xaml @@ -266,8 +266,5 @@ - - - From 4e70ad61bf4e865d079812c7b557c5533b3c091b Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sat, 14 Jun 2025 23:51:40 +0800 Subject: [PATCH 07/25] Fix build issue --- Flow.Launcher/ReleaseNotesWindow.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Flow.Launcher/ReleaseNotesWindow.xaml b/Flow.Launcher/ReleaseNotesWindow.xaml index f0bdbadda19..b5767efc954 100644 --- a/Flow.Launcher/ReleaseNotesWindow.xaml +++ b/Flow.Launcher/ReleaseNotesWindow.xaml @@ -7,7 +7,7 @@ xmlns:local="clr-namespace:Flow.Launcher" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mdxam="clr-namespace:MdXaml;assembly=MdXaml" - xmlns:ui="http://schemas.modernwpf.com/2019" + xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" xmlns:vm="clr-namespace:Flow.Launcher.ViewModel" Title="{DynamicResource releaseNotes}" Width="940" From 9fb12ea7ab5d439d441809f71baa1a7a488e149f Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sun, 15 Jun 2025 00:08:31 +0800 Subject: [PATCH 08/25] Fix build issue --- Flow.Launcher/ReleaseNotesWindow.xaml.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Flow.Launcher/ReleaseNotesWindow.xaml.cs b/Flow.Launcher/ReleaseNotesWindow.xaml.cs index 59646f35ac5..9c5bb6cd79d 100644 --- a/Flow.Launcher/ReleaseNotesWindow.xaml.cs +++ b/Flow.Launcher/ReleaseNotesWindow.xaml.cs @@ -10,6 +10,7 @@ using System.Windows.Input; using System.Windows.Media; using Flow.Launcher.Infrastructure.Http; +using iNKORE.UI.WPF.Modern; namespace Flow.Launcher { @@ -21,16 +22,16 @@ public ReleaseNotesWindow() { InitializeComponent(); SeeMore.Uri = ReleaseNotes; - ModernWpf.ThemeManager.Current.ActualApplicationThemeChanged += ThemeManager_ActualApplicationThemeChanged; + ThemeManager.Current.ActualApplicationThemeChanged += ThemeManager_ActualApplicationThemeChanged; } #region Window Events - private void ThemeManager_ActualApplicationThemeChanged(ModernWpf.ThemeManager sender, object args) + private void ThemeManager_ActualApplicationThemeChanged(ThemeManager sender, object args) { Application.Current.Dispatcher.Invoke(() => { - if (ModernWpf.ThemeManager.Current.ActualApplicationTheme == ModernWpf.ApplicationTheme.Light) + if (ThemeManager.Current.ActualApplicationTheme == ApplicationTheme.Light) { MarkdownViewer.MarkdownStyle = (Style)Application.Current.Resources["DocumentStyleGithubLikeLight"]; MarkdownViewer.Foreground = Brushes.Black; @@ -58,7 +59,7 @@ private void OnCloseExecuted(object sender, ExecutedRoutedEventArgs e) private void Window_Closed(object sender, EventArgs e) { - ModernWpf.ThemeManager.Current.ActualApplicationThemeChanged -= ThemeManager_ActualApplicationThemeChanged; + ThemeManager.Current.ActualApplicationThemeChanged -= ThemeManager_ActualApplicationThemeChanged; } #endregion From fdb7307fdb3f603001347c80827905ec006cfaa4 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sat, 5 Jul 2025 18:10:41 +0800 Subject: [PATCH 09/25] Fix build issue --- Flow.Launcher/ViewModel/MainViewModel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs index 49f7ea6c535..8dfdae77339 100644 --- a/Flow.Launcher/ViewModel/MainViewModel.cs +++ b/Flow.Launcher/ViewModel/MainViewModel.cs @@ -21,8 +21,8 @@ using Flow.Launcher.Plugin; using Flow.Launcher.Plugin.SharedCommands; using Flow.Launcher.Storage; +using iNKORE.UI.WPF.Modern; using Microsoft.VisualStudio.Threading; -using ModernWpf; namespace Flow.Launcher.ViewModel { From b9737bb3934a0c898bf62af85a355d18b0d002b5 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sat, 5 Jul 2025 18:16:03 +0800 Subject: [PATCH 10/25] Fix build issue --- Flow.Launcher/PublicAPIInstance.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Flow.Launcher/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs index a2e5f1f8591..8afe6fe615c 100644 --- a/Flow.Launcher/PublicAPIInstance.cs +++ b/Flow.Launcher/PublicAPIInstance.cs @@ -30,8 +30,8 @@ using Flow.Launcher.Plugin.SharedCommands; using Flow.Launcher.Plugin.SharedModels; using Flow.Launcher.ViewModel; +using iNKORE.UI.WPF.Modern; using JetBrains.Annotations; -using ModernWpf; using Squirrel; using Stopwatch = Flow.Launcher.Infrastructure.Stopwatch; From 156bd064f90146fd6cc721950b2bee2f5061ac61 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sat, 19 Jul 2025 16:02:45 +0800 Subject: [PATCH 11/25] Enable GPU for setting window --- Flow.Launcher/App.xaml.cs | 4 ++++ Flow.Launcher/Flow.Launcher.csproj | 2 +- Flow.Launcher/SettingWindow.xaml.cs | 6 ------ 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Flow.Launcher/App.xaml.cs b/Flow.Launcher/App.xaml.cs index 7e3915b2b5d..7e8a30613a4 100644 --- a/Flow.Launcher/App.xaml.cs +++ b/Flow.Launcher/App.xaml.cs @@ -21,6 +21,7 @@ using Flow.Launcher.Plugin; using Flow.Launcher.SettingPages.ViewModels; using Flow.Launcher.ViewModel; +using iNKORE.UI.WPF.Modern.Common; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.VisualStudio.Threading; @@ -54,6 +55,9 @@ public partial class App : IDisposable, ISingleInstanceApp public App() { + // Do not use bitmap cache since it can cause WPF second window freezing issue + ShadowAssist.UseBitmapCache = false; + // Initialize settings _settings.WMPInstalled = WindowsMediaPlayerHelper.IsWindowsMediaPlayerInstalled(); diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj index 8a476b00ada..d71e3d00859 100644 --- a/Flow.Launcher/Flow.Launcher.csproj +++ b/Flow.Launcher/Flow.Launcher.csproj @@ -89,7 +89,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs index 7d711e60d38..b04e3fafb9b 100644 --- a/Flow.Launcher/SettingWindow.xaml.cs +++ b/Flow.Launcher/SettingWindow.xaml.cs @@ -43,12 +43,6 @@ private void OnLoaded(object sender, RoutedEventArgs e) { RefreshMaximizeRestoreButton(); - // Fix (workaround) for the window freezes after lock screen (Win+L) or sleep - // https://stackoverflow.com/questions/4951058/software-rendering-mode-wpf - HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource; - HwndTarget hwndTarget = hwndSource.CompositionTarget; - hwndTarget.RenderMode = RenderMode.SoftwareOnly; // Must use software only render mode here - UpdatePositionAndState(); _viewModel.PropertyChanged += ViewModel_PropertyChanged; From 935b58a118272fcf2c88598573d483668fcccc36 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sat, 19 Jul 2025 19:38:59 +0800 Subject: [PATCH 12/25] Remove unused usings --- Flow.Launcher/SettingWindow.xaml.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs index b04e3fafb9b..c394e40cd29 100644 --- a/Flow.Launcher/SettingWindow.xaml.cs +++ b/Flow.Launcher/SettingWindow.xaml.cs @@ -3,7 +3,6 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Input; -using System.Windows.Interop; using CommunityToolkit.Mvvm.DependencyInjection; using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.UserSettings; From 7c8dcab6bbc68c60bd8894eefd6db6f7bfc24c6a Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Tue, 22 Jul 2025 18:56:26 +0800 Subject: [PATCH 13/25] Improve code quality --- Flow.Launcher/Resources/CustomControlTemplate.xaml | 2 +- Flow.Launcher/Themes/Base.xaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Flow.Launcher/Resources/CustomControlTemplate.xaml b/Flow.Launcher/Resources/CustomControlTemplate.xaml index a418ad0e427..91458f9b526 100644 --- a/Flow.Launcher/Resources/CustomControlTemplate.xaml +++ b/Flow.Launcher/Resources/CustomControlTemplate.xaml @@ -967,7 +967,7 @@ - + diff --git a/Flow.Launcher/Themes/Base.xaml b/Flow.Launcher/Themes/Base.xaml index 520e176bc72..537681ff47b 100644 --- a/Flow.Launcher/Themes/Base.xaml +++ b/Flow.Launcher/Themes/Base.xaml @@ -251,7 +251,7 @@ - + - + + Loaded="ContentFrame_Loaded"> From 93a46b8ec3d4e8dffc94df7b7232519b3e2c8ead Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 20 Aug 2025 14:04:17 +0800 Subject: [PATCH 16/25] Add theme dictionary keys --- Flow.Launcher/App.xaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Flow.Launcher/App.xaml b/Flow.Launcher/App.xaml index 30df7bb140e..b9e5c496acc 100644 --- a/Flow.Launcher/App.xaml +++ b/Flow.Launcher/App.xaml @@ -10,17 +10,17 @@ - + - + - + From 78e8f851f36c16706bb51203fb2a1f02acd1ae43 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Thu, 21 Aug 2025 10:00:12 +0800 Subject: [PATCH 17/25] Improve SelectFileManagerWindow --- Flow.Launcher/SelectFileManagerWindow.xaml | 4 ++-- Flow.Launcher/SelectFileManagerWindow.xaml.cs | 6 ------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/Flow.Launcher/SelectFileManagerWindow.xaml b/Flow.Launcher/SelectFileManagerWindow.xaml index f6763991928..0069c9485c5 100644 --- a/Flow.Launcher/SelectFileManagerWindow.xaml +++ b/Flow.Launcher/SelectFileManagerWindow.xaml @@ -75,9 +75,9 @@ - + - + Date: Thu, 21 Aug 2025 10:04:29 +0800 Subject: [PATCH 18/25] Improve ReleaseNotesWindow --- Flow.Launcher/ReleaseNotesWindow.xaml | 10 +++++++--- Flow.Launcher/ReleaseNotesWindow.xaml.cs | 3 +-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Flow.Launcher/ReleaseNotesWindow.xaml b/Flow.Launcher/ReleaseNotesWindow.xaml index 3d7959f646d..babb4613726 100644 --- a/Flow.Launcher/ReleaseNotesWindow.xaml +++ b/Flow.Launcher/ReleaseNotesWindow.xaml @@ -16,6 +16,7 @@ MinHeight="600" Background="{DynamicResource PopuBGColor}" Closed="Window_Closed" + DataContext="{Binding RelativeSource={RelativeSource Self}}" Foreground="{DynamicResource PopupTextColor}" Loaded="Window_Loaded" ResizeMode="CanResize" @@ -44,7 +45,7 @@ - + @@ -161,8 +162,11 @@ Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="5" - Margin="18 0 18 0"> - + Margin="8 0 18 0"> + diff --git a/Flow.Launcher/ReleaseNotesWindow.xaml.cs b/Flow.Launcher/ReleaseNotesWindow.xaml.cs index fed4c0cc4dd..9ce06a49a27 100644 --- a/Flow.Launcher/ReleaseNotesWindow.xaml.cs +++ b/Flow.Launcher/ReleaseNotesWindow.xaml.cs @@ -16,12 +16,11 @@ namespace Flow.Launcher { public partial class ReleaseNotesWindow : Window { - private static readonly string ReleaseNotes = Properties.Settings.Default.GithubRepo + "/releases"; + public string ReleaseNotes => Properties.Settings.Default.GithubRepo + "/releases"; public ReleaseNotesWindow() { InitializeComponent(); - SeeMore.Uri = ReleaseNotes; ThemeManager.Current.ActualApplicationThemeChanged += ThemeManager_ActualApplicationThemeChanged; } From e940686ee130234256c607c23d7ac2bdb8a1d5cb Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Thu, 21 Aug 2025 10:07:29 +0800 Subject: [PATCH 19/25] Use SettingsCard & SettingsExpander & HyperLinkButton & InfoBar from UI.Modern.WPF --- .../SettingPages/Views/SettingsPaneAbout.xaml | 145 ++-- .../Views/SettingsPaneGeneral.xaml | 676 ++++++++-------- .../Views/SettingsPaneHotkey.xaml | 733 +++++++++--------- .../Views/SettingsPanePluginStore.xaml | 14 +- .../Views/SettingsPanePlugins.xaml | 12 +- .../SettingPages/Views/SettingsPaneProxy.xaml | 70 +- .../SettingPages/Views/SettingsPaneTheme.xaml | 640 +++++++-------- 7 files changed, 1176 insertions(+), 1114 deletions(-) diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml index bbbc71e479f..6ff1a1b02b3 100644 --- a/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml +++ b/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml @@ -4,6 +4,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:cc="clr-namespace:Flow.Launcher.Resources.Controls" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:settingsVm="clr-namespace:Flow.Launcher.SettingPages.ViewModels" xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" @@ -18,7 +19,6 @@ @@ -30,80 +30,82 @@ Text="{DynamicResource about}" TextAlignment="left" /> - - + + + + + + - - + + - - - - + + + + + + + + + + + + + - - - - - + + + + + +