From 0b2100a6613b11413f395dfd82c87421633390a6 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Sat, 7 Mar 2026 10:11:22 -0500 Subject: [PATCH] fix: restore SelectedParts after plate switch in ActionClone SetPlate clears SelectedParts, which broke bounds drawing and rotation for surviving actions. Add OnPlateChanged hook so ActionClone can re-populate SelectedParts after a plate switch. Co-Authored-By: Claude Opus 4.6 --- OpenNest/Actions/Action.cs | 2 ++ OpenNest/Actions/ActionClone.cs | 6 ++++++ OpenNest/Controls/PlateView.cs | 2 ++ 3 files changed, 10 insertions(+) diff --git a/OpenNest/Actions/Action.cs b/OpenNest/Actions/Action.cs index 5914fec..22c82fd 100644 --- a/OpenNest/Actions/Action.cs +++ b/OpenNest/Actions/Action.cs @@ -13,6 +13,8 @@ namespace OpenNest.Actions public virtual bool SurvivesPlateChange => false; + public virtual void OnPlateChanged() { } + public abstract void DisconnectEvents(); public abstract void CancelAction(); diff --git a/OpenNest/Actions/ActionClone.cs b/OpenNest/Actions/ActionClone.cs index e3dc7bf..534b013 100644 --- a/OpenNest/Actions/ActionClone.cs +++ b/OpenNest/Actions/ActionClone.cs @@ -100,6 +100,12 @@ namespace OpenNest.Actions public override bool SurvivesPlateChange => true; + public override void OnPlateChanged() + { + plateView.SelectedParts.Clear(); + plateView.SelectedParts.AddRange(parts); + } + public override void DisconnectEvents() { plateView.KeyDown -= plateView_KeyDown; diff --git a/OpenNest/Controls/PlateView.cs b/OpenNest/Controls/PlateView.cs index 819f39f..b19d305 100644 --- a/OpenNest/Controls/PlateView.cs +++ b/OpenNest/Controls/PlateView.cs @@ -129,6 +129,8 @@ namespace OpenNest.Controls if (currentAction == null || !currentAction.SurvivesPlateChange) SetAction(typeof(ActionSelect)); + else + currentAction.OnPlateChanged(); } public string Status