Improve performance of expand / collapse all

This commit is contained in:
WarmUpTill
2021-10-21 23:17:31 +02:00
committed by WarmUpTill
parent c34308f743
commit 2e96c226b5
5 changed files with 28 additions and 20 deletions

View File

@@ -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 &);

View File

@@ -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;

View File

@@ -145,3 +145,8 @@ void MacroSegmentEdit::SetFocusPolicyOfWidgets()
w->installEventFilter(new MouseWheelWidgetAdjustmentGuard(w));
}
}
void MacroSegmentEdit::SetCollapsed(bool collapsed)
{
_section->SetCollapsed(collapsed);
}

View File

@@ -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<MacroSegmentEdit *>(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);
}

View File

@@ -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) {