mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-31 17:53:32 +00:00
Device visualizer - Don't eat mouse up events on LEDs (fixes pan getting stuck)
This commit is contained in:
parent
e2f456866a
commit
d114c37439
@ -97,16 +97,28 @@ namespace Artemis.UI.Shared
|
|||||||
/// Occurs when a LED of the device has been clicked
|
/// Occurs when a LED of the device has been clicked
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event EventHandler<LedClickedEventArgs>? LedClicked;
|
public event EventHandler<LedClickedEventArgs>? LedClicked;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Occurs when the device was clicked but not on a LED.
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler<PointerReleasedEventArgs>? Clicked;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Invokes the <see cref="LedClicked" /> event
|
/// Invokes the <see cref="LedClicked" /> event
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="e"></param>
|
|
||||||
protected virtual void OnLedClicked(LedClickedEventArgs e)
|
protected virtual void OnLedClicked(LedClickedEventArgs e)
|
||||||
{
|
{
|
||||||
LedClicked?.Invoke(this, 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()
|
private void Update()
|
||||||
{
|
{
|
||||||
InvalidateVisual();
|
InvalidateVisual();
|
||||||
@ -142,10 +154,9 @@ namespace Artemis.UI.Shared
|
|||||||
Point scaledPosition = new(x * Device.Rectangle.Width, y * Device.Rectangle.Height);
|
Point scaledPosition = new(x * Device.Rectangle.Width, y * Device.Rectangle.Height);
|
||||||
DeviceVisualizerLed? deviceVisualizerLed = _deviceVisualizerLeds.FirstOrDefault(l => l.HitTest(scaledPosition));
|
DeviceVisualizerLed? deviceVisualizerLed = _deviceVisualizerLeds.FirstOrDefault(l => l.HitTest(scaledPosition));
|
||||||
if (deviceVisualizerLed != null)
|
if (deviceVisualizerLed != null)
|
||||||
{
|
|
||||||
OnLedClicked(new LedClickedEventArgs(deviceVisualizerLed.Led.Device, deviceVisualizerLed.Led, e));
|
OnLedClicked(new LedClickedEventArgs(deviceVisualizerLed.Led.Device, deviceVisualizerLed.Led, e));
|
||||||
e.Handled = true;
|
else
|
||||||
}
|
OnClicked(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DevicePropertyChanged(object? sender, PropertyChangedEventArgs e)
|
private void DevicePropertyChanged(object? sender, PropertyChangedEventArgs e)
|
||||||
@ -326,5 +337,7 @@ namespace Artemis.UI.Shared
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -35,7 +35,8 @@
|
|||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
ShowColors="True"
|
ShowColors="True"
|
||||||
Margin="20"
|
Margin="20"
|
||||||
LedClicked="DeviceVisualizer_OnLedClicked" />
|
LedClicked="DeviceVisualizer_OnLedClicked"
|
||||||
|
Clicked="DeviceVisualizer_OnClicked"/>
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal"
|
<StackPanel Orientation="Horizontal"
|
||||||
VerticalAlignment="Bottom"
|
VerticalAlignment="Bottom"
|
||||||
|
|||||||
@ -32,9 +32,15 @@ public class DevicePropertiesView : ReactiveCoreWindow<DevicePropertiesViewModel
|
|||||||
ViewModel.SelectedLeds.Add(e.Led);
|
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))
|
if (!e.KeyModifiers.HasFlag(KeyModifiers.Shift))
|
||||||
ViewModel?.ClearSelectedLeds.Execute().Subscribe();
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user