diff --git a/src/Artemis.UI/Screens/RootViewModel.cs b/src/Artemis.UI/Screens/RootViewModel.cs index 18706d496..cb726d024 100644 --- a/src/Artemis.UI/Screens/RootViewModel.cs +++ b/src/Artemis.UI/Screens/RootViewModel.cs @@ -178,21 +178,17 @@ namespace Artemis.UI.Screens if (!PinSidebar.Value) _sidebarViewModel.IsSidebarOpen = false; - // Don't do a fade when selecting a module because the editor is so bulky the animation slows things down - if (!(_sidebarViewModel.SelectedItem is ModuleRootViewModel)) - ActiveItemReady = false; + ActiveItemReady = false; // Allow the menu to close, it's slower but feels more responsive, funny how that works right - Execute.PostToUIThreadAsync(async () => + Execute.PostToUIThread(async () => { - if (PinSidebar.Value) - await Task.Delay(200); - else - await Task.Delay(400); - + await Task.Delay(400); ActiveItem = _sidebarViewModel.SelectedItem; + await Task.Delay(200); ActiveItemReady = true; }); + } } @@ -296,7 +292,7 @@ namespace Artemis.UI.Screens PluginSetting setupWizardCompleted = _settingsService.GetSetting("UI.SetupWizardCompleted", false); if (!setupWizardCompleted.Value) ShowSetupWizard(); - + base.OnInitialActivate(); } diff --git a/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs b/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs index 3cbf3c712..848458f78 100644 --- a/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs +++ b/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs @@ -9,6 +9,7 @@ using Artemis.Core.Services; using Artemis.UI.Events; using Artemis.UI.Ninject.Factories; using Artemis.UI.Screens.Home; +using Artemis.UI.Screens.Modules; using Artemis.UI.Screens.News; using Artemis.UI.Screens.Settings; using Artemis.UI.Screens.SurfaceEditor; @@ -200,12 +201,19 @@ namespace Artemis.UI.Screens.Sidebar private void ActivateViewModel() { + if (SelectedItem != null && SelectedItem.GetType() == typeof(T)) + return; SelectedItem = (IScreen) _kernel.Get(); } private void ActivateModule(INavigationItem sidebarItem) { - SelectedItem = SidebarModules.ContainsKey(sidebarItem) ? _moduleVmFactory.CreateModuleRootViewModel(SidebarModules[sidebarItem]) : null; + if (!SidebarModules.ContainsKey(sidebarItem)) + return; + if (SelectedItem is ModuleRootViewModel moduleRootViewModel && moduleRootViewModel.Module == SidebarModules[sidebarItem]) + return; + + SelectedItem = _moduleVmFactory.CreateModuleRootViewModel(SidebarModules[sidebarItem]); } #region IDisposable