From 2bf587c0a343fcbfd97a9e11fefa121a4352ce6d Mon Sep 17 00:00:00 2001 From: rampaa Date: Fri, 14 Feb 2025 19:50:46 +0300 Subject: [PATCH] Minor --- JL.Windows/Utilities/WindowsUtils.cs | 36 +++++++++++++++++++--------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/JL.Windows/Utilities/WindowsUtils.cs b/JL.Windows/Utilities/WindowsUtils.cs index 44a7a5ba..6dad0000 100644 --- a/JL.Windows/Utilities/WindowsUtils.cs +++ b/JL.Windows/Utilities/WindowsUtils.cs @@ -489,31 +489,45 @@ public static Size MeasureTextSize(string text, double fontSize) public static void ShowColorPicker(Button button) { - using ColorPicker picker = SingleOpenHelper.CreateControl(); + ColorPicker picker = SingleOpenHelper.CreateControl(); HandyControl.Controls.PopupWindow window = new() { PopupElement = picker, WindowStartupLocation = WindowStartupLocation.CenterScreen }; + picker.SelectedBrush = (SolidColorBrush)button.Tag; + picker.Tag = (window, button); + picker.Canceled += ColorPicker_Cancelled; + picker.Confirmed += ColorPicker_Confirmed; - picker.Canceled += delegate - { - window.Close(); - }; + window.ShowDialog(picker, false); + } - picker.Confirmed += delegate + private static void ColorPicker_Cancelled(object? sender, EventArgs e) + { + if (sender is not ColorPicker colorPicker) { - ConfirmColor(button, picker.SelectedBrush, window); - }; + return; + } - window.ShowDialog(picker, false); + (HandyControl.Controls.PopupWindow window, _) = ((HandyControl.Controls.PopupWindow, Button))colorPicker.Tag; + + window.Close(); + colorPicker.Dispose(); } - private static void ConfirmColor(Button button, Brush selectedBrush, Window window) + private static void ColorPicker_Confirmed(object? sender, FunctionEventArgs e) { - SetButtonColor(button, selectedBrush); + if (sender is not ColorPicker colorPicker) + { + return; + } + + (HandyControl.Controls.PopupWindow window, Button button) = ((HandyControl.Controls.PopupWindow, Button))colorPicker.Tag; + SetButtonColor(button, colorPicker.SelectedBrush); window.Close(); + colorPicker.Dispose(); } public static void SetButtonColor(Button button, Brush selectedBrush)