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

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

No files matched your search

@@ -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
}
}
@@ -35,7 +35,8 @@
VerticalAlignment="Center"
ShowColors="True"
Margin="20"
LedClicked="DeviceVisualizer_OnLedClicked" />
LedClicked="DeviceVisualizer_OnLedClicked"
Clicked="DeviceVisualizer_OnClicked"/>
<StackPanel Orientation="Horizontal"
VerticalAlignment="Bottom"
@@ -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();
}
}