nested macros

This commit is contained in:
WarmUpTill
2026-08-29 20:56:45 +02:00
parent 71a2a83c3b
commit bb9e3efa90
9 changed files with 208 additions and 11 deletions

View File

@@ -251,6 +251,14 @@ void MacroConditionEdit::ConditionSelectionChanged(const QString &text)
return;
}
Macro *const parentMacro =
(*_entryData)->GetMacro()->GetNestedParentMacro();
OBSDataAutoRelease parentBeforeData;
if (parentMacro) {
parentBeforeData = obs_data_create();
parentMacro->Save(parentBeforeData);
}
const std::string oldId = (*_entryData)->GetId();
const int oldLogic = (int)(*_entryData)->GetLogicType();
OBSDataAutoRelease oldData = obs_data_create();
@@ -276,9 +284,14 @@ void MacroConditionEdit::ConditionSelectionChanged(const QString &text)
OBSDataAutoRelease newData = obs_data_create();
(*_entryData)->Save(newData);
RegisterSegmentTypeChangeUndoRedo(
macro, MacroEdit::SegmentType::CONDITION, idx, oldId, oldData,
oldLogic, id, newData, (int)(*_entryData)->GetLogicType());
if (parentMacro) {
RegisterMacroModifyUndoRedo(parentMacro, parentBeforeData);
} else {
RegisterSegmentTypeChangeUndoRedo(
macro, MacroEdit::SegmentType::CONDITION, idx, oldId,
oldData, oldLogic, id, newData,
(int)(*_entryData)->GetLogicType());
}
auto widget =
MacroConditionFactory::CreateWidget(id, this, *_entryData);
QWidget::connect(widget, SIGNAL(HeaderInfoChanged(const QString &)),