diff --git a/OpenNest/Actions/Action.cs b/OpenNest/Actions/Action.cs index 2df37da..5914fec 100644 --- a/OpenNest/Actions/Action.cs +++ b/OpenNest/Actions/Action.cs @@ -11,6 +11,8 @@ namespace OpenNest.Actions this.plateView = plateView; } + public virtual bool SurvivesPlateChange => false; + public abstract void DisconnectEvents(); public abstract void CancelAction(); diff --git a/OpenNest/Actions/ActionClone.cs b/OpenNest/Actions/ActionClone.cs index a0d4837..e3dc7bf 100644 --- a/OpenNest/Actions/ActionClone.cs +++ b/OpenNest/Actions/ActionClone.cs @@ -98,6 +98,8 @@ namespace OpenNest.Actions plateView.Invalidate(); } + public override bool SurvivesPlateChange => true; + public override void DisconnectEvents() { plateView.KeyDown -= plateView_KeyDown; diff --git a/OpenNest/Controls/PlateView.cs b/OpenNest/Controls/PlateView.cs index b8de140..819f39f 100644 --- a/OpenNest/Controls/PlateView.cs +++ b/OpenNest/Controls/PlateView.cs @@ -127,7 +127,8 @@ namespace OpenNest.Controls foreach (var part in plate.Parts) parts.Add(LayoutPart.Create(part, this)); - SetAction(typeof(ActionSelect)); + if (currentAction == null || !currentAction.SurvivesPlateChange) + SetAction(typeof(ActionSelect)); } public string Status