diff --git a/lib/macro/macro-tab.cpp b/lib/macro/macro-tab.cpp index a32a77ae..a0d2b2cb 100644 --- a/lib/macro/macro-tab.cpp +++ b/lib/macro/macro-tab.cpp @@ -100,11 +100,33 @@ void AdvSceneSwitcher::on_macroAdd_clicked() return; } - ui->macros->Add(newMacro); if (addPulse) { addPulse->deleteLater(); addPulse = nullptr; } + + auto selectedMacro = GetSelectedMacro(); + if (!selectedMacro) { + ui->macros->Add(newMacro); + emit MacroAdded(QString::fromStdString(name)); + return; + } + + if (selectedMacro->IsGroup()) { + ui->macros->Add(newMacro, selectedMacro); + emit MacroAdded(QString::fromStdString(name)); + return; + } + + auto selectedMacroGroup = selectedMacro->Parent(); + if (!selectedMacroGroup) { + ui->macros->Add(newMacro, selectedMacro); + emit MacroAdded(QString::fromStdString(name)); + return; + } + + Macro::PrepareMoveToGroup(selectedMacroGroup, newMacro); + ui->macros->Add(newMacro, selectedMacro); emit MacroAdded(QString::fromStdString(name)); }