diff --git a/src/Artemis.UI.Shared/Services/ProfileEditor/ProfileEditorService.cs b/src/Artemis.UI.Shared/Services/ProfileEditor/ProfileEditorService.cs index 79b6d7a59..e8ba019cc 100644 --- a/src/Artemis.UI.Shared/Services/ProfileEditor/ProfileEditorService.cs +++ b/src/Artemis.UI.Shared/Services/ProfileEditor/ProfileEditorService.cs @@ -8,6 +8,7 @@ using System.Reactive.Subjects; using System.Threading.Tasks; using Artemis.Core; using Artemis.Core.Services; +using Artemis.UI.Shared.Services.MainWindow; using Artemis.UI.Shared.Services.ProfileEditor.Commands; using DynamicData; using ReactiveUI; @@ -40,6 +41,7 @@ internal class ProfileEditorService : IProfileEditorService IModuleService moduleService, IRgbService rgbService, ILayerBrushService layerBrushService, + IMainWindowService mainWindowService, IWindowService windowService) { _logger = logger; @@ -78,6 +80,9 @@ internal class ProfileEditorService : IProfileEditorService .Throttle(TimeSpan.FromSeconds(1)) .SelectMany(async _ => await AutoSaveProfileAsync()) .Subscribe(); + + // When the main window closes, stop editing + mainWindowService.MainWindowClosed += (_, _) => ChangeCurrentProfileConfiguration(null); } public IObservable ProfileConfiguration { get; } diff --git a/src/Artemis.UI/Screens/ProfileEditor/Panels/Playback/PlaybackViewModel.cs b/src/Artemis.UI/Screens/ProfileEditor/Panels/Playback/PlaybackViewModel.cs index 56aee2362..e2186f46d 100644 --- a/src/Artemis.UI/Screens/ProfileEditor/Panels/Playback/PlaybackViewModel.cs +++ b/src/Artemis.UI/Screens/ProfileEditor/Panels/Playback/PlaybackViewModel.cs @@ -40,7 +40,7 @@ public class PlaybackViewModel : ActivatableViewModelBase _lastUpdate = DateTime.MinValue; DispatcherTimer updateTimer = new(TimeSpan.FromMilliseconds(60.0 / 1000), DispatcherPriority.Render, Update); updateTimer.Start(); - Disposable.Create(() => updateTimer.Stop()); + Disposable.Create(() => updateTimer.Stop()).DisposeWith(d); }); PlayFromStart = ReactiveCommand.Create(ExecutePlayFromStart); diff --git a/src/Artemis.UI/Screens/Root/RootViewModel.cs b/src/Artemis.UI/Screens/Root/RootViewModel.cs index 41a69ccb4..eaa22f364 100644 --- a/src/Artemis.UI/Screens/Root/RootViewModel.cs +++ b/src/Artemis.UI/Screens/Root/RootViewModel.cs @@ -1,5 +1,4 @@ - -using System; +using System; using System.Linq; using System.Threading.Tasks; using Artemis.Core; @@ -92,12 +91,11 @@ namespace Artemis.UI.Screens.Root set => RaiseAndSetIfChanged(ref _titleBarViewModel, value); } - private void CurrentMainWindowOnClosed(object? sender, EventArgs e) + private void CurrentMainWindowOnClosing(object? sender, EventArgs e) { _lifeTime.MainWindow = null; SidebarViewModel = null; Router.NavigateAndReset.Execute(new EmptyViewModel(this, "blank")).Subscribe(); - OnMainWindowClosed(); } @@ -190,7 +188,7 @@ namespace Artemis.UI.Screens.Root SidebarViewModel = _sidebarVmFactory.SidebarViewModel(this); _lifeTime.MainWindow = new MainWindow {DataContext = this}; _lifeTime.MainWindow.Show(); - _lifeTime.MainWindow.Closed += CurrentMainWindowOnClosed; + _lifeTime.MainWindow.Closing += CurrentMainWindowOnClosing; } _lifeTime.MainWindow.WindowState = WindowState.Normal; diff --git a/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs b/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs index 0fe80b668..bedb68f89 100644 --- a/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs +++ b/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs @@ -52,8 +52,7 @@ namespace Artemis.UI.Screens.Sidebar new SidebarScreenViewModel(MaterialIconKind.Devices, "Surface Editor"), new SidebarScreenViewModel(MaterialIconKind.Cog, "Settings") }; - _selectedSidebarScreen = SidebarScreens.First(); - + UpdateProfileCategories(); UpdateHeaderDevice(); @@ -81,6 +80,8 @@ namespace Artemis.UI.Screens.Sidebar _hostScreen.Router.Navigate.Execute(profileEditorVmFactory.ProfileEditorViewModel(_hostScreen)); }) .DisposeWith(disposables); + + SelectedSidebarScreen = SidebarScreens.First(); }); }