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); + } + } +}