From 444f4fb1548accd2c75da87e2b3efa5ae6c5800a Mon Sep 17 00:00:00 2001 From: "Daniel K. O. (dkosmari)" Date: Wed, 26 Feb 2025 02:40:01 -0300 Subject: [PATCH] Allow empty combos. --- source/ButtonComboInfo.cpp | 8 +++++++- source/ButtonComboManager.cpp | 9 ++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/source/ButtonComboInfo.cpp b/source/ButtonComboInfo.cpp index 305582c..ce16d11 100644 --- a/source/ButtonComboInfo.cpp +++ b/source/ButtonComboInfo.cpp @@ -97,6 +97,12 @@ bool ButtonComboInfoIF::conflictsWith(const ButtonComboModule_ButtonComboOptions if ((mControllerMask & other.controllerMask) == 0) { return false; } + + // No conflicts when either button combo is empty. + if (!other.combo || !mCombo) { + return false; + } + if ((other.combo & mCombo) == mCombo || (other.combo & mCombo) == other.combo) { return true; } @@ -141,4 +147,4 @@ int32_t ButtonComboInfoIF::ControllerTypeToChanIndex(const ButtonComboModule_Con } return -1; -} \ No newline at end of file +} diff --git a/source/ButtonComboManager.cpp b/source/ButtonComboManager.cpp index e451e71..a731568 100644 --- a/source/ButtonComboManager.cpp +++ b/source/ButtonComboManager.cpp @@ -288,11 +288,6 @@ std::optional> ButtonComboManager::CreateComb err = BUTTON_COMBO_MODULE_ERROR_INCOMPATIBLE_OPTIONS_VERSION; return std::nullopt; } - if (options.buttonComboOptions.basicCombo.combo == 0 || - options.buttonComboOptions.basicCombo.controllerMask == BUTTON_COMBO_MODULE_CONTROLLER_NONE) { - err = BUTTON_COMBO_MODULE_ERROR_INVALID_COMBO; - return std::nullopt; - } if (options.callbackOptions.callback == nullptr) { err = BUTTON_COMBO_MODULE_ERROR_INVALID_ARGUMENT; return std::nullopt; @@ -302,7 +297,7 @@ std::optional> ButtonComboManager::CreateComb switch (options.buttonComboOptions.type) { case BUTTON_COMBO_MODULE_COMBO_TYPE_HOLD_OBSERVER: observer = true; - __attribute__((fallthrough)); + [[fallthrough]]; case BUTTON_COMBO_MODULE_COMBO_TYPE_HOLD: { if (options.buttonComboOptions.optionalHoldForXMs == 0) { err = BUTTON_COMBO_MODULE_ERROR_DURATION_MISSING; @@ -319,7 +314,7 @@ std::optional> ButtonComboManager::CreateComb } case BUTTON_COMBO_MODULE_COMBO_TYPE_PRESS_DOWN_OBSERVER: observer = true; - __attribute__((fallthrough)); + [[fallthrough]]; case BUTTON_COMBO_MODULE_COMBO_TYPE_PRESS_DOWN: { err = BUTTON_COMBO_MODULE_ERROR_SUCCESS; return std::make_shared(options.metaOptions.label,