diff --git a/Artemis/Artemis/Managers/LoopManager.cs b/Artemis/Artemis/Managers/LoopManager.cs index b747a8512..f31a22913 100644 --- a/Artemis/Artemis/Managers/LoopManager.cs +++ b/Artemis/Artemis/Managers/LoopManager.cs @@ -98,7 +98,7 @@ namespace Artemis.Managers if (_moduleManager.ActiveModule == null) { var lastModule = _moduleManager.GetLastModule(); - if (lastModule == null) + if (lastModule == null || !lastModule.Settings.IsEnabled) { _logger.Debug("Cancel LoopManager start, no module"); return; diff --git a/Artemis/Artemis/Managers/ModuleManager.cs b/Artemis/Artemis/Managers/ModuleManager.cs index f8903bc53..59088bd1c 100644 --- a/Artemis/Artemis/Managers/ModuleManager.cs +++ b/Artemis/Artemis/Managers/ModuleManager.cs @@ -169,6 +169,8 @@ namespace Artemis.Managers /// public void DisableProcessBoundModule() { + if (ActiveModule == null) + return; if (!ActiveModule.IsBoundToProcess) { _logger.Warn("Active module {0} is not process bound but is being disabled as if it is.", @@ -176,10 +178,11 @@ namespace Artemis.Managers return; } - if (GetLastModule() == null) + var lastModule = GetLastModule(); + if (lastModule == null || !lastModule.Settings.IsEnabled) ClearActiveModule(); else - ChangeActiveModule(GetLastModule()); + ChangeActiveModule(lastModule); } protected virtual void RaiseEffectChangedEvent(ModuleChangedEventArgs e) diff --git a/Artemis/Artemis/Managers/PreviewManager.cs b/Artemis/Artemis/Managers/PreviewManager.cs index ff5657762..c7a52dfdc 100644 --- a/Artemis/Artemis/Managers/PreviewManager.cs +++ b/Artemis/Artemis/Managers/PreviewManager.cs @@ -82,7 +82,7 @@ namespace Artemis.Managers activePreview?.ProfileEditor?.SaveSelectedProfile(); var lastModule = _moduleManager.GetLastModule(); - if (lastModule != null) + if (lastModule != null && lastModule.Settings.IsEnabled) _moduleManager.ChangeActiveModule(lastModule); else _moduleManager.ClearActiveModule(); diff --git a/Artemis/Artemis/Modules/Abstract/ModuleModel.cs b/Artemis/Artemis/Modules/Abstract/ModuleModel.cs index 13776b9ab..9a8bf6599 100644 --- a/Artemis/Artemis/Modules/Abstract/ModuleModel.cs +++ b/Artemis/Artemis/Modules/Abstract/ModuleModel.cs @@ -88,6 +88,8 @@ namespace Artemis.Modules.Abstract /// public ProfileModel ProfileModel { get; protected set; } + public bool IsGeneral => !IsOverlay && !IsBoundToProcess; + #endregion #region Base methods diff --git a/Artemis/Artemis/Modules/Abstract/ModuleViewModel.cs b/Artemis/Artemis/Modules/Abstract/ModuleViewModel.cs index ff70eba65..524dd1608 100644 --- a/Artemis/Artemis/Modules/Abstract/ModuleViewModel.cs +++ b/Artemis/Artemis/Modules/Abstract/ModuleViewModel.cs @@ -28,7 +28,7 @@ namespace Artemis.Modules.Abstract _mainManager.EnabledChanged += MainManagerOnEnabledChanged; _moduleManager.EffectChanged += ModuleManagerOnModuleChanged; - + // ReSharper disable once VirtualMemberCallInConstructor if (!UsesProfileEditor) return; @@ -68,7 +68,7 @@ namespace Artemis.Modules.Abstract { get { - if (ModuleModel.IsBoundToProcess || ModuleModel.IsOverlay) + if (!ModuleModel.IsGeneral) return Settings.IsEnabled; return _generalSettings.LastModule == ModuleModel.Name; } @@ -91,7 +91,7 @@ namespace Artemis.Modules.Abstract private void UpdatedEnabledSetting() { - if (ModuleModel.IsBoundToProcess || ModuleModel.IsOverlay) + if (!ModuleModel.IsGeneral || !_moduleManager.ActiveModule.IsGeneral || Settings.IsEnabled == IsModuleActive) return; Settings.IsEnabled = IsModuleActive; @@ -106,7 +106,7 @@ namespace Artemis.Modules.Abstract NotifyOfPropertyChange(() => Settings); // On process-bound modules, only set the module model - if (ModuleModel.IsBoundToProcess || ModuleModel.IsOverlay) + if (!ModuleModel.IsGeneral) { NotifyOfPropertyChange(() => IsModuleActive); NotifyOfPropertyChange(() => IsModuleEnabled);