From 89efb6d1c8965320759dd27783c92b33f64417f4 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sun, 20 Feb 2022 20:09:24 +0100 Subject: [PATCH] Allow selecting either an action or condition but not both --- src/headers/advanced-scene-switcher.hpp | 2 ++ src/macro-action-edit.cpp | 10 +++------- src/macro-condition-edit.cpp | 10 +++------- src/macro-tab.cpp | 11 +++++++++++ 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/headers/advanced-scene-switcher.hpp b/src/headers/advanced-scene-switcher.hpp index 736f3290..9f7010a2 100644 --- a/src/headers/advanced-scene-switcher.hpp +++ b/src/headers/advanced-scene-switcher.hpp @@ -286,6 +286,8 @@ public slots: void on_close_clicked(); private: + void SetSelection(MacroSegmentList *, int); + MacroSegmentList *conditionsList = nullptr; MacroSegmentList *actionsList = nullptr; diff --git a/src/macro-action-edit.cpp b/src/macro-action-edit.cpp index 67090c1a..2bb301a8 100644 --- a/src/macro-action-edit.cpp +++ b/src/macro-action-edit.cpp @@ -313,17 +313,13 @@ void AdvSceneSwitcher::MacroActionSelectionChanged(int idx) return; } - for (int i = 0; i < actionsList->ContentLayout()->count(); ++i) { - auto widget = static_cast( - actionsList->ContentLayout()->itemAt(i)->widget()); - if (widget) { - widget->SetSelected(i == idx); - } - } + SetSelection(actionsList, idx); + SetSelection(conditionsList, -1); if (idx < 0 || idx >= macro->Actions().size()) { currentActionIdx = -1; } else { currentActionIdx = idx; } + currentConditionIdx = -1; } diff --git a/src/macro-condition-edit.cpp b/src/macro-condition-edit.cpp index bcc96b9e..2053c453 100644 --- a/src/macro-condition-edit.cpp +++ b/src/macro-condition-edit.cpp @@ -455,17 +455,13 @@ void AdvSceneSwitcher::MacroConditionSelectionChanged(int idx) return; } - for (int i = 0; i < conditionsList->ContentLayout()->count(); ++i) { - auto widget = static_cast( - conditionsList->ContentLayout()->itemAt(i)->widget()); - if (widget) { - widget->SetSelected(i == idx); - } - } + SetSelection(conditionsList, idx); + SetSelection(actionsList, -1); if (idx < 0 || idx >= macro->Conditions().size()) { currentConditionIdx = -1; } else { currentConditionIdx = idx; } + currentActionIdx = -1; } diff --git a/src/macro-tab.cpp b/src/macro-tab.cpp index ac8349e9..be3485bb 100644 --- a/src/macro-tab.cpp +++ b/src/macro-tab.cpp @@ -581,3 +581,14 @@ void AdvSceneSwitcher::HighlightMatchedMacros() } } } + +void AdvSceneSwitcher::SetSelection(MacroSegmentList *list, int idx) +{ + for (int i = 0; i < list->ContentLayout()->count(); ++i) { + auto widget = static_cast( + list->ContentLayout()->itemAt(i)->widget()); + if (widget) { + widget->SetSelected(i == idx); + } + } +}