From dbde5e3854b3721e4162a95ed8b3bfb144daa6e8 Mon Sep 17 00:00:00 2001 From: Jaime Bernardo Date: Wed, 2 Feb 2022 12:17:37 +0000 Subject: [PATCH] [Runner]remove hotkeyEx when disabling a module (#15944) --- src/runner/general_settings.cpp | 10 +++++++--- src/runner/powertoy_module.cpp | 3 ++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/runner/general_settings.cpp b/src/runner/general_settings.cpp index 2833b59d51f..01ace3e0f22 100644 --- a/src/runner/general_settings.cpp +++ b/src/runner/general_settings.cpp @@ -149,7 +149,8 @@ void apply_general_settings(const json::JsonObject& general_configs, bool save) { continue; } - const bool module_inst_enabled = modules().at(name)->is_enabled(); + PowertoyModule& powertoy = modules().at(name); + const bool module_inst_enabled = powertoy->is_enabled(); const bool target_enabled = value.GetBoolean(); if (module_inst_enabled == target_enabled) { @@ -157,12 +158,14 @@ void apply_general_settings(const json::JsonObject& general_configs, bool save) } if (target_enabled) { - modules().at(name)->enable(); + powertoy->enable(); } else { - modules().at(name)->disable(); + powertoy->disable(); } + // Sync the hotkey state with the module state, so it can be removed for disabled modules. + powertoy.UpdateHotkeyEx(); } } @@ -221,6 +224,7 @@ void start_enabled_powertoys() if (!powertoys_to_disable.contains(name)) { powertoy->enable(); + powertoy.UpdateHotkeyEx(); } } } diff --git a/src/runner/powertoy_module.cpp b/src/runner/powertoy_module.cpp index 7adb523a04a..d350979f46b 100644 --- a/src/runner/powertoy_module.cpp +++ b/src/runner/powertoy_module.cpp @@ -74,11 +74,12 @@ void PowertoyModule::UpdateHotkeyEx() { CentralizedHotkeys::UnregisterHotkeysForModule(pt_module->get_key()); auto container = pt_module->GetHotkeyEx(); - if (container.has_value()) + if (container.has_value() && pt_module->is_enabled()) { auto hotkey = container.value(); auto modulePtr = pt_module.get(); auto action = [modulePtr](WORD modifiersMask, WORD vkCode) { + Logger::trace(L"{} hotkey Ex is invoked from Centralized keyboard hook", modulePtr->get_key()); modulePtr->OnHotkeyEx(); };