diff --git a/ApplicationView/MainScreenTabView.cs b/ApplicationView/MainScreenTabView.cs index 46c45d151..e58124e13 100644 --- a/ApplicationView/MainScreenTabView.cs +++ b/ApplicationView/MainScreenTabView.cs @@ -99,6 +99,8 @@ namespace MatterHackers.MatterControl QueueData.Instance.ItemRemoved.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents); UpdateControlData.Instance.UpdateStatusChanged.RegisterEvent(SetUpdateNotification, ref unregisterEvents); + WidescreenPanel.PreChangePannels.RegisterEvent(SaveCurrentTab, ref unregisterEvents); + SelectedTabIndex = tabStateBeforeClose; } @@ -109,10 +111,9 @@ namespace MatterHackers.MatterControl QueueTabPage.Text = string.Format(queueString, QueueData.Instance.Count); } - public override void OnClosing(out bool cancelClose) + void SaveCurrentTab(object sender, EventArgs e) { tabStateBeforeClose = SelectedTabIndex; - base.OnClosing(out cancelClose); } public override void OnClosed(EventArgs e) diff --git a/ApplicationView/WidescreenPanel.cs b/ApplicationView/WidescreenPanel.cs index a346c33ff..93eaa0912 100644 --- a/ApplicationView/WidescreenPanel.cs +++ b/ApplicationView/WidescreenPanel.cs @@ -75,6 +75,9 @@ namespace MatterHackers.MatterControl event EventHandler unregisterEvents; + public static RootedObjectEventHandler PreChangePannels = new RootedObjectEventHandler(); + public static RootedObjectEventHandler PostChangePannels = new RootedObjectEventHandler(); + QueueDataView queueDataView = null; public WidescreenPanel() @@ -206,10 +209,6 @@ namespace MatterHackers.MatterControl public void StoreUiState() { - if (queueDataView != null) - { - MainScreenUiState.lastSelectedIndex = queueDataView.SelectedIndex; - } if (advancedControls != null) { MainScreenUiState.lastAdvancedControlsTab = advancedControls.SelectedTabIndex; @@ -218,10 +217,8 @@ namespace MatterHackers.MatterControl void RestoreUiState() { - if (MainScreenUiState.lastSelectedIndex != MainScreenUiState.EmpytValue && queueDataView != null) - { - queueDataView.SelectedIndex = MainScreenUiState.lastSelectedIndex; - } + queueDataView.SelectedIndex = QueueDataView.lastSelectedTabOnAnyView; + if (MainScreenUiState.lastAdvancedControlsTab != MainScreenUiState.EmpytValue && advancedControls != null) { advancedControls.SelectedTabIndex = MainScreenUiState.lastAdvancedControlsTab; @@ -295,6 +292,7 @@ namespace MatterHackers.MatterControl { return; } + PreChangePannels.CallEvents(this, null); StoreUiState(); RemovePanelsAndCreateEmpties(); @@ -326,6 +324,7 @@ namespace MatterHackers.MatterControl RestoreUiState(); lastNumberVisible = numberOfPanels; + PostChangePannels.CallEvents(this, null); } void SetColumnVisibility(object state = null) diff --git a/MatterControlApplication.cs b/MatterControlApplication.cs index 75af2dc3d..c2da2a6ec 100644 --- a/MatterControlApplication.cs +++ b/MatterControlApplication.cs @@ -51,8 +51,6 @@ namespace MatterHackers.MatterControl public static class MainScreenUiState { public static readonly int EmpytValue = -2; - public static int lastMainScreenTabIndex = 0; - public static int lastSelectedIndex = EmpytValue; public static int lastAdvancedControlsTab = EmpytValue; } diff --git a/PrintQueue/QueueDataView.cs b/PrintQueue/QueueDataView.cs index 738c15d58..948e90833 100644 --- a/PrintQueue/QueueDataView.cs +++ b/PrintQueue/QueueDataView.cs @@ -193,6 +193,8 @@ namespace MatterHackers.MatterControl.PrintQueue } } + public static int lastSelectedTabOnAnyView = 0; + public int SelectedIndex { get @@ -206,6 +208,7 @@ namespace MatterHackers.MatterControl.PrintQueue throw new ArgumentOutOfRangeException(); } + lastSelectedTabOnAnyView = value; selectedIndex = value; OnSelectedIndexChanged();