diff --git a/src/headers/macro-segment.hpp b/src/headers/macro-segment.hpp index 341d3b5a..8585d7b8 100644 --- a/src/headers/macro-segment.hpp +++ b/src/headers/macro-segment.hpp @@ -30,6 +30,7 @@ public: // Use this function to avoid accidental edits when scrolling through // list of actions and conditions void SetFocusPolicyOfWidgets(); + void SetCollapsed(bool collapsed); protected slots: void HeaderInfoChanged(const QString &); diff --git a/src/headers/section.hpp b/src/headers/section.hpp index 8eb27112..62c0de03 100644 --- a/src/headers/section.hpp +++ b/src/headers/section.hpp @@ -16,6 +16,7 @@ public: void SetContent(QWidget *w, bool collapsed = true); void AddHeaderWidget(QWidget *); + void SetCollapsed(bool); protected: bool eventFilter(QObject *obj, QEvent *event) override; diff --git a/src/macro-segment.cpp b/src/macro-segment.cpp index a11dde6c..a67224ec 100644 --- a/src/macro-segment.cpp +++ b/src/macro-segment.cpp @@ -145,3 +145,8 @@ void MacroSegmentEdit::SetFocusPolicyOfWidgets() w->installEventFilter(new MouseWheelWidgetAdjustmentGuard(w)); } } + +void MacroSegmentEdit::SetCollapsed(bool collapsed) +{ + _section->SetCollapsed(collapsed); +} diff --git a/src/macro-tab.cpp b/src/macro-tab.cpp index 87d29d3c..449730d2 100644 --- a/src/macro-tab.cpp +++ b/src/macro-tab.cpp @@ -404,17 +404,25 @@ void AdvSceneSwitcher::CopyMacro() ui->macros->setCurrentItem(item); } +void setCollapsedStateOfSegmentsIn(QLayout *layout, bool collapse) +{ + QLayoutItem *item = nullptr; + for (int i = 0; i < layout->count(); i++) { + item = layout->itemAt(i); + auto segment = dynamic_cast(item->widget()); + if (segment) { + segment->SetCollapsed(collapse); + } + } +} + void AdvSceneSwitcher::ExpandAllActions() { auto m = getSelectedMacro(); if (!m) { return; } - - for (auto &a : m->Actions()) { - a->SetCollapsed(false); - } - SetEditMacro(*m); + setCollapsedStateOfSegmentsIn(ui->macroEditActionLayout, false); } void AdvSceneSwitcher::ExpandAllConditions() @@ -423,11 +431,7 @@ void AdvSceneSwitcher::ExpandAllConditions() if (!m) { return; } - - for (auto &c : m->Conditions()) { - c->SetCollapsed(false); - } - SetEditMacro(*m); + setCollapsedStateOfSegmentsIn(ui->macroEditConditionLayout, false); } void AdvSceneSwitcher::CollapseAllActions() @@ -436,11 +440,7 @@ void AdvSceneSwitcher::CollapseAllActions() if (!m) { return; } - - for (auto &a : m->Actions()) { - a->SetCollapsed(true); - } - SetEditMacro(*m); + setCollapsedStateOfSegmentsIn(ui->macroEditActionLayout, true); } void AdvSceneSwitcher::CollapseAllConditions() @@ -449,9 +449,5 @@ void AdvSceneSwitcher::CollapseAllConditions() if (!m) { return; } - - for (auto &c : m->Conditions()) { - c->SetCollapsed(true); - } - SetEditMacro(*m); + setCollapsedStateOfSegmentsIn(ui->macroEditConditionLayout, true); } diff --git a/src/section.cpp b/src/section.cpp index 11e265d0..32b7685f 100644 --- a/src/section.cpp +++ b/src/section.cpp @@ -93,6 +93,11 @@ void Section::AddHeaderWidget(QWidget *w) _headerWidgetLayout->addWidget(w); } +void Section::SetCollapsed(bool collapsed) +{ + Collapse(collapsed); +} + bool Section::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::Resize && !_transitioning && !_collapsed) {