Create copy of previous macro segment when inserting new segment

This commit is contained in:
WarmUpTill 2021-08-23 21:16:31 +02:00 committed by WarmUpTill
parent c842595214
commit 8cfed048cc
2 changed files with 26 additions and 6 deletions

View File

@ -134,12 +134,22 @@ void AdvSceneSwitcher::AddMacroAction(int idx)
return;
}
MacroActionSwitchScene temp;
std::string id = temp.GetId();
std::string id;
if (idx - 1 >= 0) {
id = macro->Actions().at(idx - 1)->GetId();
} else {
MacroActionSwitchScene temp;
id = temp.GetId();
}
std::lock_guard<std::mutex> lock(switcher->m);
macro->Actions().emplace(macro->Actions().begin() + idx,
MacroActionFactory::Create(id));
if (idx - 1 >= 0) {
auto data = obs_data_create();
macro->Actions().at(idx - 1)->Save(data);
macro->Actions().at(idx)->Load(data);
obs_data_release(data);
}
macro->UpdateActionIndices();
// All entry pointers in existing edit widgets after the new entry will

View File

@ -254,14 +254,24 @@ void AdvSceneSwitcher::AddMacroCondition(int idx)
return;
}
MacroConditionScene temp;
std::string id = temp.GetId();
std::string id;
if (idx - 1 >= 0) {
id = macro->Conditions().at(idx - 1)->GetId();
} else {
MacroConditionScene temp;
id = temp.GetId();
}
std::lock_guard<std::mutex> lock(switcher->m);
bool root = idx == 0;
auto cond =
macro->Conditions().emplace(macro->Conditions().begin() + idx,
MacroConditionFactory::Create(id));
if (idx - 1 >= 0) {
auto data = obs_data_create();
macro->Conditions().at(idx - 1)->Save(data);
macro->Conditions().at(idx)->Load(data);
obs_data_release(data);
}
auto logic = root ? LogicType::ROOT_NONE : LogicType::NONE;
(*cond)->SetLogicType(logic);
macro->UpdateConditionIndices();