mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 03:48:56 +00:00
UI - Performance improvements
This commit is contained in:
1 parent
7ad7eaad89
commit
13a16a1830
9 files changed
+165
-135
No files matched your search
@@ -188,8 +188,7 @@
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
<Canvas>
|
||||
<Rectangle ClipToBounds="False"
|
||||
Width="{Binding MaxTextureSize}"
|
||||
<Rectangle Width="{Binding MaxTextureSize}"
|
||||
Height="{Binding MaxTextureSize}"
|
||||
Stroke="{DynamicResource SecondaryHueMidBrush}"
|
||||
StrokeThickness="{Binding MaxTextureSizeIndicatorThickness}"
|
||||
|
||||
@@ -18,6 +18,7 @@ using Artemis.UI.Screens.SurfaceEditor.Visualization;
|
||||
using Artemis.UI.Shared;
|
||||
using Artemis.UI.Shared.Services;
|
||||
using SkiaSharp;
|
||||
using SkiaSharp.Views.WPF;
|
||||
using Stylet;
|
||||
using MouseButton = System.Windows.Input.MouseButton;
|
||||
|
||||
@@ -305,7 +306,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
||||
if (e.LeftButton == MouseButtonState.Pressed)
|
||||
StartMouseDrag(sender, position, relative);
|
||||
else
|
||||
StopMouseDrag(sender, position);
|
||||
StopMouseDrag(position);
|
||||
}
|
||||
|
||||
// ReSharper disable once UnusedMember.Global - Called from view
|
||||
@@ -323,7 +324,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
||||
if (_mouseDragStatus == MouseDragStatus.Dragging)
|
||||
MoveSelected(relative);
|
||||
else if (_mouseDragStatus == MouseDragStatus.Selecting)
|
||||
UpdateSelection(sender, position);
|
||||
UpdateSelection(position);
|
||||
}
|
||||
|
||||
private void StartMouseDrag(object sender, Point position, Point relative)
|
||||
@@ -360,17 +361,18 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
||||
ApplySurfaceSelection();
|
||||
}
|
||||
|
||||
private void StopMouseDrag(object sender, Point position)
|
||||
private void StopMouseDrag(Point position)
|
||||
{
|
||||
if (_mouseDragStatus != MouseDragStatus.Dragging)
|
||||
{
|
||||
RectangleGeometry selectedRect = new(new Rect(_mouseDragStartPoint, position));
|
||||
List<SurfaceDeviceViewModel> devices = HitTestUtilities.GetHitViewModels<SurfaceDeviceViewModel>((Visual) sender, selectedRect);
|
||||
SKRect hitTestRect = PanZoomViewModel.UnTransformContainingRect(new Rect(_mouseDragStartPoint, position)).ToSKRect();
|
||||
foreach (SurfaceDeviceViewModel device in SurfaceDeviceViewModels)
|
||||
if (devices.Contains(device))
|
||||
{
|
||||
if (device.Device.Rectangle.IntersectsWith(hitTestRect))
|
||||
device.SelectionStatus = SelectionStatus.Selected;
|
||||
else if (!Keyboard.IsKeyDown(Key.LeftShift) && !Keyboard.IsKeyDown(Key.RightShift))
|
||||
device.SelectionStatus = SelectionStatus.None;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -382,7 +384,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
||||
ApplySurfaceSelection();
|
||||
}
|
||||
|
||||
private void UpdateSelection(object sender, Point position)
|
||||
private void UpdateSelection(Point position)
|
||||
{
|
||||
if (IsPanKeyDown())
|
||||
return;
|
||||
@@ -390,12 +392,14 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
||||
Rect selectedRect = new(_mouseDragStartPoint, position);
|
||||
SelectionRectangle.Rect = selectedRect;
|
||||
|
||||
List<SurfaceDeviceViewModel> devices = HitTestUtilities.GetHitViewModels<SurfaceDeviceViewModel>((Visual) sender, SelectionRectangle);
|
||||
SKRect hitTestRect = PanZoomViewModel.UnTransformContainingRect(new Rect(_mouseDragStartPoint, position)).ToSKRect();
|
||||
foreach (SurfaceDeviceViewModel device in SurfaceDeviceViewModels)
|
||||
if (devices.Contains(device))
|
||||
{
|
||||
if (device.Device.Rectangle.IntersectsWith(hitTestRect))
|
||||
device.SelectionStatus = SelectionStatus.Selected;
|
||||
else if (!Keyboard.IsKeyDown(Key.LeftShift) && !Keyboard.IsKeyDown(Key.RightShift))
|
||||
device.SelectionStatus = SelectionStatus.None;
|
||||
}
|
||||
|
||||
ApplySurfaceSelection();
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user