diff --git a/MatterControlLib/DesignTools/PublicPropertyEditor.cs b/MatterControlLib/DesignTools/PublicPropertyEditor.cs index 2cbc33fe6..76c335085 100644 --- a/MatterControlLib/DesignTools/PublicPropertyEditor.cs +++ b/MatterControlLib/DesignTools/PublicPropertyEditor.cs @@ -350,6 +350,7 @@ namespace MatterHackers.MatterControl.DesignTools var field = new DoubleField(theme); field.Initialize(0); field.DoubleValue = doubleValue; + field.ClearUndoHistory(); RegisterValueChanged(field, (valueString) => { return double.Parse(valueString); }); void RefreshField(object s, InvalidateArgs e) @@ -388,6 +389,8 @@ namespace MatterHackers.MatterControl.DesignTools var field = new Vector2Field(theme); field.Initialize(0); field.Vector2 = vector2; + field.ClearUndoHistory(); + RegisterValueChanged(field, (valueString) => Vector2.Parse(valueString), (value) => @@ -395,6 +398,7 @@ namespace MatterHackers.MatterControl.DesignTools var s = ((Vector2)value).ToString(); return s.Substring(1, s.Length - 2); }); + rowContainer = CreateSettingsColumn(property, field); } else if (propertyValue is Vector3 vector3) @@ -402,6 +406,7 @@ namespace MatterHackers.MatterControl.DesignTools var field = new Vector3Field(theme); field.Initialize(0); field.Vector3 = vector3; + field.ClearUndoHistory(); RegisterValueChanged( field, @@ -419,6 +424,8 @@ namespace MatterHackers.MatterControl.DesignTools var field = new DirectionVectorField(theme); field.Initialize(0); field.SetValue(directionVector); + field.ClearUndoHistory(); + field.ValueChanged += (s, e) => { property.SetValue(field.DirectionVector); @@ -434,6 +441,8 @@ namespace MatterHackers.MatterControl.DesignTools var field1 = new DirectionVectorField(theme); field1.Initialize(0); + field1.ClearUndoHistory(); + field1.SetValue(new DirectionVector() { Normal = directionAxis.Normal @@ -447,6 +456,7 @@ namespace MatterHackers.MatterControl.DesignTools var field2 = new Vector3Field(theme); field2.Initialize(0); field2.Vector3 = directionAxis.Origin - property.Item.Children.First().GetAxisAlignedBoundingBox().Center; + field2.ClearUndoHistory(); var row2 = CreateSettingsColumn("Offset".Localize(), field2); @@ -580,6 +590,8 @@ namespace MatterHackers.MatterControl.DesignTools var field = new IntField(theme); field.Initialize(0); field.IntValue = intValue; + field.ClearUndoHistory(); + RegisterValueChanged(field, (valueString) => { return int.Parse(valueString); }); void RefreshField(object s, InvalidateArgs e) @@ -629,6 +641,7 @@ namespace MatterHackers.MatterControl.DesignTools var field = new TextField(theme); field.Initialize(0); field.SetValue(stringValue, false); + field.ClearUndoHistory(); field.Content.HAnchor = HAnchor.Stretch; RegisterValueChanged(field, (valueString) => valueString); rowContainer = CreateSettingsRow(property, field, theme); @@ -649,6 +662,7 @@ namespace MatterHackers.MatterControl.DesignTools var field = new CharField(theme); field.Initialize(0); field.SetValue(charValue.ToString(), false); + field.ClearUndoHistory(); field.ValueChanged += (s, e) => { property.SetValue(Convert.ToChar(field.Value)); diff --git a/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs b/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs index 5ea2f0d56..16559d548 100644 --- a/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs +++ b/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs @@ -810,14 +810,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration uiField.Content.ToolTipText = ""; // make sure the undo data goes back to the initial value after a change - if (uiField.Content is MHTextEditWidget textWidget) - { - textWidget.ActualTextEditWidget.InternalTextEditWidget.ClearUndoHistory(); - } - else if (uiField.Content is MHNumberEdit numberWidget) - { - numberWidget.ActuallNumberEdit.InternalTextEditWidget.ClearUndoHistory(); - } + uiField.ClearUndoHistory(); uiField.ValueChanged += (s, e) => { diff --git a/MatterControlLib/SlicerConfiguration/UIFields/NumberField.cs b/MatterControlLib/SlicerConfiguration/UIFields/NumberField.cs index 3f34e05f7..a592e2640 100644 --- a/MatterControlLib/SlicerConfiguration/UIFields/NumberField.cs +++ b/MatterControlLib/SlicerConfiguration/UIFields/NumberField.cs @@ -34,9 +34,10 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public abstract class NumberField : UIField { protected MHNumberEdit numberEdit; - private ThemeConfig theme; + private readonly ThemeConfig theme; protected bool AllowNegatives { get; set; } = true; + protected bool AllowDecimals { get; set; } = true; public NumberField(ThemeConfig theme) diff --git a/MatterControlLib/SlicerConfiguration/UIFields/UIField.cs b/MatterControlLib/SlicerConfiguration/UIFields/UIField.cs index 653b0f64e..9f59b7ec3 100644 --- a/MatterControlLib/SlicerConfiguration/UIFields/UIField.cs +++ b/MatterControlLib/SlicerConfiguration/UIFields/UIField.cs @@ -77,5 +77,18 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { ValueChanged?.Invoke(this, fieldChangedEventArgs); } + + public void ClearUndoHistory() + { + foreach (var widget in this.Content.DescendantsAndSelf()) + { + widget.ActualTextEditWidget.InternalTextEditWidget.ClearUndoHistory(); + } + + foreach (var widget in this.Content.DescendantsAndSelf()) + { + widget.ActuallNumberEdit.InternalTextEditWidget.ClearUndoHistory(); + } + } } } diff --git a/Submodules/MatterSlice b/Submodules/MatterSlice index afb3857da..71e3ef968 160000 --- a/Submodules/MatterSlice +++ b/Submodules/MatterSlice @@ -1 +1 @@ -Subproject commit afb3857da3d30fe9957f8d4654ea2eb7218743b8 +Subproject commit 71e3ef9688101735b4c7b98f7f0c02c14b1af118 diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 3623ff408..8e697d187 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 3623ff4084d7c3b09e7b5bd0e5f0b2c5c7e408d9 +Subproject commit 8e697d187f74cf35b10a2674606aa047973c8e91