diff --git a/InkCanvas.Controls/ToolMenuButton.xaml b/InkCanvas.Controls/ToolMenuButton.xaml index d789f494..8a5b70f7 100644 --- a/InkCanvas.Controls/ToolMenuButton.xaml +++ b/InkCanvas.Controls/ToolMenuButton.xaml @@ -6,33 +6,37 @@ xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf" mc:Ignorable="d" d:DesignHeight="38" d:DesignWidth="32"> - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/InkCanvas.Controls/ToolMenuButton.xaml.cs b/InkCanvas.Controls/ToolMenuButton.xaml.cs index 63ffe48e..284c4c1a 100644 --- a/InkCanvas.Controls/ToolMenuButton.xaml.cs +++ b/InkCanvas.Controls/ToolMenuButton.xaml.cs @@ -9,6 +9,7 @@ namespace Ink_Canvas.Controls { private Geometry _pendingGeometry; private Brush _pendingBrush; + private static ToolMenuButton _lastPressedButton; public static readonly DependencyProperty LabelProperty = DependencyProperty.Register( nameof(Label), typeof(string), typeof(ToolMenuButton), @@ -68,8 +69,8 @@ namespace Ink_Canvas.Controls public new Brush Background { - get => ButtonPanel.Background; - set => ButtonPanel.Background = value; + get => ButtonBorder.Background; + set => ButtonBorder.Background = value; } public GeometryDrawing Icon @@ -90,6 +91,7 @@ namespace Ink_Canvas.Controls { InitializeComponent(); Loaded += ToolMenuButton_Loaded; + ButtonBorder.Background = Brushes.Transparent; } private void ToolMenuButton_Loaded(object sender, RoutedEventArgs e) @@ -105,17 +107,36 @@ namespace Ink_Canvas.Controls private void ButtonPanel_MouseDown(object sender, MouseButtonEventArgs e) { + if (!IsEnabled) return; + if (_lastPressedButton != null && _lastPressedButton != this) + { + _lastPressedButton.ButtonBorder.Background = Brushes.Transparent; + } + _lastPressedButton = this; + ButtonBorder.Background = new SolidColorBrush(Color.FromArgb(80, 24, 24, 27)); ButtonMouseDown?.Invoke(this, e); } private void ButtonPanel_MouseLeave(object sender, MouseEventArgs e) { + if (!IsEnabled) return; + if (_lastPressedButton == this) + { + ButtonBorder.Background = Brushes.Transparent; + _lastPressedButton = null; + } ButtonMouseLeave?.Invoke(this, e); } private void ButtonPanel_MouseUp(object sender, MouseButtonEventArgs e) { + if (!IsEnabled) return; + if (_lastPressedButton == this) + { + ButtonBorder.Background = Brushes.Transparent; + _lastPressedButton = null; + } ButtonMouseUp?.Invoke(this, e); } } -} +} \ No newline at end of file