diff --git a/CustomWidgets/DockingTabControl.cs b/CustomWidgets/DockingTabControl.cs index 156d68ac4..913867ad8 100644 --- a/CustomWidgets/DockingTabControl.cs +++ b/CustomWidgets/DockingTabControl.cs @@ -52,12 +52,18 @@ namespace MatterHackers.MatterControl.CustomWidgets private GuiWidget topToBottom; protected GuiWidget widgetTodockTo; + private Func getSelectedTab; + private Action setSelectedTab; + public DockSide DockSide { get; set; } - public DockingTabControl(GuiWidget widgetTodockTo, DockSide dockSide) + public DockingTabControl(GuiWidget widgetTodockTo, DockSide dockSide, Func getSelectedTab, Action setSelectedTab) { this.widgetTodockTo = widgetTodockTo; this.DockSide = dockSide; + + this.getSelectedTab = getSelectedTab; + this.setSelectedTab = setSelectedTab; } public event EventHandler PinStatusChanged; @@ -122,6 +128,7 @@ namespace MatterHackers.MatterControl.CustomWidgets topToBottom.AddChild(resizePage); } + int tabIndex = 0; foreach (var nameWidget in allTabs) { string tabTitle = nameWidget.Key; @@ -131,8 +138,7 @@ namespace MatterHackers.MatterControl.CustomWidgets var content = new DockWindowContent(this, nameWidget.Value, tabTitle); var tabPage = new TabPage(content, tabTitle); - - tabControl.AddTab(new TextTab( + var textTab = new TextTab( tabPage, tabTitle + " Tab", 12, @@ -140,7 +146,16 @@ namespace MatterHackers.MatterControl.CustomWidgets RGBA_Bytes.Transparent, ActiveTheme.Instance.TabLabelUnselected, RGBA_Bytes.Transparent, - useUnderlineStyling: true)); + useUnderlineStyling: true); + + tabControl.AddTab(textTab); + + int localTabIndex = tabIndex; + textTab.Click += (s, e) => + { + setSelectedTab?.Invoke(localTabIndex); + }; + } else // control is floating { @@ -177,7 +192,15 @@ namespace MatterHackers.MatterControl.CustomWidgets }; settingsButton.PopupLayoutEngine = new UnpinnedLayoutEngine(settingsButton.PopupContent, widgetTodockTo, DockSide); topToBottom.AddChild(settingsButton); + + int localTabIndex = tabIndex; + settingsButton.Click += (s, e) => + { + setSelectedTab?.Invoke(localTabIndex); + }; } + + tabIndex++; } if (ControlIsPinned) @@ -187,6 +210,11 @@ namespace MatterHackers.MatterControl.CustomWidgets var pinButton = this.CreatePinButton(); pinButton.Margin = new BorderDouble(right: 18, bottom: 7); tabControl.TabBar.AddChild(pinButton); + + if (getSelectedTab != null) + { + tabControl.SelectedTabIndex = getSelectedTab.Invoke(); + } } } diff --git a/PartPreviewWindow/OverflowDropdown.cs b/PartPreviewWindow/OverflowDropdown.cs index dce9aa55b..227724da4 100644 --- a/PartPreviewWindow/OverflowDropdown.cs +++ b/PartPreviewWindow/OverflowDropdown.cs @@ -119,6 +119,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow this.HAnchor = HAnchor.Fit; this.VAnchor = VAnchor.Fit; this.buttonView = buttonView; + this.buttonView.Selectable = false; this.AddChild(buttonView); } diff --git a/PartPreviewWindow/PrinterTabPage.cs b/PartPreviewWindow/PrinterTabPage.cs index 49540ef49..d6aa41617 100644 --- a/PartPreviewWindow/PrinterTabPage.cs +++ b/PartPreviewWindow/PrinterTabPage.cs @@ -357,9 +357,20 @@ namespace MatterHackers.MatterControl.PartPreviewWindow return renderType; } + int lastTabSelected = 0; + int GetSelectedTab() + { + return lastTabSelected; + } + + void SetSelectedTab(int tabIndex) + { + lastTabSelected = tabIndex; + } + private void AddSettingsTabBar(GuiWidget parent, GuiWidget widgetTodockTo) { - var sideBar = new DockingTabControl(widgetTodockTo, DockSide.Right) + var sideBar = new DockingTabControl(widgetTodockTo, DockSide.Right, GetSelectedTab, SetSelectedTab) { ControlIsPinned = ApplicationController.Instance.PrintSettingsPinned }; diff --git a/Submodules/MatterSlice b/Submodules/MatterSlice index 6327a0c89..b03414565 160000 --- a/Submodules/MatterSlice +++ b/Submodules/MatterSlice @@ -1 +1 @@ -Subproject commit 6327a0c89d25c7657f1061136286b80aa38e53f5 +Subproject commit b03414565921030bb924bfcc07b94ebc278b350a diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 43be61511..77ed601d5 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 43be61511ee9cef07576f624ce61696b8935c72c +Subproject commit 77ed601d5e80f4f3e10437db0d4d032f5c453399