From 5707bff89b5accb654c06e74b52ee71c1e2262ce Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Sat, 7 Mar 2026 01:12:03 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20rotate=20selected=20parts=2090=C2=B0=20?= =?UTF-8?q?on=20middle=20mouse=20click?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- OpenNest/Controls/PlateView.cs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/OpenNest/Controls/PlateView.cs b/OpenNest/Controls/PlateView.cs index edaec13..b8de140 100644 --- a/OpenNest/Controls/PlateView.cs +++ b/OpenNest/Controls/PlateView.cs @@ -26,6 +26,7 @@ namespace OpenNest.Controls private Plate plate; private Action currentAction; private List parts; + private Point middleMouseDownPoint; public List SelectedParts; public ReadOnlyCollection Parts; @@ -166,6 +167,31 @@ namespace OpenNest.Controls AddPartFromDrawing(dwg, pt2); } + protected override void OnMouseDown(MouseEventArgs e) + { + if (e.Button == MouseButtons.Middle) + middleMouseDownPoint = e.Location; + + base.OnMouseDown(e); + } + + protected override void OnMouseUp(MouseEventArgs e) + { + if (e.Button == MouseButtons.Middle && SelectedParts.Count > 0) + { + var dx = e.X - middleMouseDownPoint.X; + var dy = e.Y - middleMouseDownPoint.Y; + + if (dx * dx + dy * dy < 25) + { + RotateSelectedParts(Angle.ToRadians(90)); + Invalidate(); + } + } + + base.OnMouseUp(e); + } + protected override void OnMouseWheel(MouseEventArgs e) { base.OnMouseWheel(e);