1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Device visualizer - Don't eat mouse up events on LEDs (fixes pan getting stuck)

This commit is contained in:
Robert 2022-07-16 23:01:18 +02:00
parent e2f456866a
commit d114c37439
3 changed files with 26 additions and 6 deletions

View File

@ -97,16 +97,28 @@ namespace Artemis.UI.Shared
/// Occurs when a LED of the device has been clicked
/// </summary>
public event EventHandler<LedClickedEventArgs>? LedClicked;
/// <summary>
/// Occurs when the device was clicked but not on a LED.
/// </summary>
public event EventHandler<PointerReleasedEventArgs>? Clicked;
/// <summary>
/// Invokes the <see cref="LedClicked" /> event
/// </summary>
/// <param name="e"></param>
protected virtual void OnLedClicked(LedClickedEventArgs e)
{
LedClicked?.Invoke(this, e);
}
/// <summary>
/// Invokes the <see cref="Clicked" /> event
/// </summary>
protected virtual void OnClicked(PointerReleasedEventArgs e)
{
Clicked?.Invoke(this, e);
}
private void Update()
{
InvalidateVisual();
@ -142,10 +154,9 @@ namespace Artemis.UI.Shared
Point scaledPosition = new(x * Device.Rectangle.Width, y * Device.Rectangle.Height);
DeviceVisualizerLed? deviceVisualizerLed = _deviceVisualizerLeds.FirstOrDefault(l => l.HitTest(scaledPosition));
if (deviceVisualizerLed != null)
{
OnLedClicked(new LedClickedEventArgs(deviceVisualizerLed.Led.Device, deviceVisualizerLed.Led, e));
e.Handled = true;
}
else
OnClicked(e);
}
private void DevicePropertyChanged(object? sender, PropertyChangedEventArgs e)
@ -326,5 +337,7 @@ namespace Artemis.UI.Shared
}
#endregion
}
}

View File

@ -35,7 +35,8 @@
VerticalAlignment="Center"
ShowColors="True"
Margin="20"
LedClicked="DeviceVisualizer_OnLedClicked" />
LedClicked="DeviceVisualizer_OnLedClicked"
Clicked="DeviceVisualizer_OnClicked"/>
<StackPanel Orientation="Horizontal"
VerticalAlignment="Bottom"

View File

@ -32,9 +32,15 @@ public class DevicePropertiesView : ReactiveCoreWindow<DevicePropertiesViewModel
ViewModel.SelectedLeds.Add(e.Led);
}
private void DeviceDisplayGrid_OnPointerReleased(object? sender, PointerReleasedEventArgs e)
private void DeviceVisualizer_OnClicked(object? sender, PointerReleasedEventArgs e)
{
if (!e.KeyModifiers.HasFlag(KeyModifiers.Shift))
ViewModel?.ClearSelectedLeds.Execute().Subscribe();
}
private void DeviceDisplayGrid_OnPointerReleased(object? sender, PointerReleasedEventArgs e)
{
if (!e.KeyModifiers.HasFlag(KeyModifiers.Shift) && e.Source is not DeviceVisualizer)
ViewModel?.ClearSelectedLeds.Execute().Subscribe();
}
}