diff --git a/CustomWidgets/DisableableWidget.cs b/CustomWidgets/DisableableWidget.cs index 691e1a645..65945a50b 100644 --- a/CustomWidgets/DisableableWidget.cs +++ b/CustomWidgets/DisableableWidget.cs @@ -14,44 +14,47 @@ namespace MatterHackers.MatterControl.CustomWidgets this.Margin = new BorderDouble(3); disableOverlay = new GuiWidget(0, 0); - this.BoundsChanged += (s, e) => - { - if (Parent != null - && Parent.Visible && Parent.Width > 0 - && Parent.Height > 0 - && Parent.Children.Count > 1) - { - if(Children.IndexOf(disableOverlay) != Children.Count-1) - { - Children.RemoveAt(Children.IndexOf(disableOverlay)); - disableOverlay.ClearRemovedFlag(); - Children.Add(disableOverlay); - } - - var childBounds = GetChildrenBoundsIncludingMargins(considerChild: (parent, child) => - { - if (child == disableOverlay) - { - return false; - } - - return true; - }); - - if (childBounds != RectangleDouble.ZeroIntersection) - { - disableOverlay.LocalBounds = new RectangleDouble(childBounds.Left, - childBounds.Bottom, - childBounds.Right, - childBounds.Top - disableOverlay.Margin.Top); - } - } - }; + this.BoundsChanged += (s, e) => EnsureCorrectBounds(); + this.ParentChanged += (s, e) => EnsureCorrectBounds(); disableOverlay.Visible = false; base.AddChild(disableOverlay); } + private void EnsureCorrectBounds() + { + if (Parent != null + && Parent.Visible && Parent.Width > 0 + && Parent.Height > 0 + && Parent.Children.Count > 1) + { + if (Children.IndexOf(disableOverlay) != Children.Count - 1) + { + Children.RemoveAt(Children.IndexOf(disableOverlay)); + disableOverlay.ClearRemovedFlag(); + Children.Add(disableOverlay); + } + + var childBounds = GetChildrenBoundsIncludingMargins(considerChild: (parent, child) => + { + if (child == disableOverlay) + { + return false; + } + + return true; + }); + + if (childBounds != RectangleDouble.ZeroIntersection) + { + disableOverlay.LocalBounds = new RectangleDouble(childBounds.Left, + childBounds.Bottom, + childBounds.Right, + childBounds.Top - disableOverlay.Margin.Top); + } + } + } + public enum EnableLevel { Disabled, ConfigOnly, Enabled }; public void SetEnableLevel(EnableLevel enabledLevel) diff --git a/PrinterControls/ManualPrinterControls.cs b/PrinterControls/ManualPrinterControls.cs index b3287b4f8..6c3e5e736 100644 --- a/PrinterControls/ManualPrinterControls.cs +++ b/PrinterControls/ManualPrinterControls.cs @@ -234,7 +234,7 @@ namespace MatterHackers.MatterControl { widget?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled); } - movementControlsContainer?.jogControls.EnableBabystepping(false); + movementControlsContainer?.jogControls.SetEnabledLevels(false, false); break; @@ -255,7 +255,7 @@ namespace MatterHackers.MatterControl { widget?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled); } - movementControlsContainer?.jogControls.EnableBabystepping(false); + movementControlsContainer?.jogControls.SetEnabledLevels(false, true); break; case PrinterConnectionAndCommunication.CommunicationStates.PrintingFromSd: @@ -294,7 +294,7 @@ namespace MatterHackers.MatterControl widget?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled); } - movementControlsContainer?.jogControls.EnableBabystepping(true); + movementControlsContainer?.jogControls.SetEnabledLevels(true, false); break; default: @@ -318,7 +318,7 @@ namespace MatterHackers.MatterControl { widget?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled); } - movementControlsContainer?.jogControls.EnableBabystepping(false); + movementControlsContainer?.jogControls.SetEnabledLevels(false, true); break; @@ -533,7 +533,7 @@ namespace MatterHackers.MatterControl { widget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled); } - movementControlsContainer.jogControls.EnableBabystepping(false); + movementControlsContainer.jogControls.SetEnabledLevels(false, false); break; @@ -554,7 +554,7 @@ namespace MatterHackers.MatterControl { widget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled); } - movementControlsContainer.jogControls.EnableBabystepping(false); + movementControlsContainer.jogControls.SetEnabledLevels(false, true); break; @@ -595,7 +595,7 @@ namespace MatterHackers.MatterControl widget?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled); } - movementControlsContainer?.jogControls.EnableBabystepping(true); + movementControlsContainer?.jogControls.SetEnabledLevels(true, false); break; @@ -621,7 +621,7 @@ namespace MatterHackers.MatterControl { widget?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled); } - movementControlsContainer?.jogControls.EnableBabystepping(false); + movementControlsContainer?.jogControls.SetEnabledLevels(false, true); break; diff --git a/PrinterControls/XYZJogControls.cs b/PrinterControls/XYZJogControls.cs index f34414234..74049ce6b 100644 --- a/PrinterControls/XYZJogControls.cs +++ b/PrinterControls/XYZJogControls.cs @@ -257,6 +257,7 @@ namespace MatterHackers.MatterControl FlowLayoutWidget eButtons = CreateEButtons(buttonSeparationDistance); disableableEButtons = new DisableableWidget() { + Name = "disableableEButtons", HAnchor = HAnchor.FitToChildren, VAnchor = VAnchor.FitToChildren | VAnchor.ParentTop, }; @@ -275,7 +276,7 @@ namespace MatterHackers.MatterControl // this.HAnchor |= HAnchor.ParentLeftRight; } - internal void EnableBabystepping(bool enableBabysteppingMode) + internal void SetEnabledLevels(bool enableBabysteppingMode, bool enableEControls) { if (enableBabysteppingMode) { @@ -295,7 +296,7 @@ namespace MatterHackers.MatterControl tenButton.Enabled = !enableBabysteppingMode; oneHundredButton.Enabled = !enableBabysteppingMode; - disableableEButtons.SetEnableLevel(enableBabysteppingMode ? DisableableWidget.EnableLevel.Disabled : DisableableWidget.EnableLevel.Enabled); + disableableEButtons.SetEnableLevel(enableEControls ? DisableableWidget.EnableLevel.Enabled : DisableableWidget.EnableLevel.Disabled); tooBigForBabyStepping.SetEnableLevel(enableBabysteppingMode ? DisableableWidget.EnableLevel.Disabled : DisableableWidget.EnableLevel.Enabled); }