diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 2518a62e..8b198fe7 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -180,6 +180,7 @@ AdvSceneSwitcher.macroTab.segment.useCustomLabel="Use custom label" AdvSceneSwitcher.macroTab.segment.customLabelRename="Rename custom label" AdvSceneSwitcher.macroTab.segment.defaultCustomLabel="My label" AdvSceneSwitcher.macroTab.segment.setCustomLabel="Set label ..." +AdvSceneSwitcher.macroTab.segment.remove="Remove" AdvSceneSwitcher.macroTab.segment.copy="Copy" AdvSceneSwitcher.macroTab.segment.paste="Paste" AdvSceneSwitcher.macroTab.segment.pasteAction="Paste as action" diff --git a/lib/macro/macro-tab.cpp b/lib/macro/macro-tab.cpp index 724e108d..73fc501e 100644 --- a/lib/macro/macro-tab.cpp +++ b/lib/macro/macro-tab.cpp @@ -1170,7 +1170,25 @@ static void setupCopyPasteContextMenuEnry(AdvSceneSwitcher *ss, paste->setEnabled(MacroSegmentIsInClipboard()); } +static void setupRemoveContextMenuEnry( + AdvSceneSwitcher *ss, + const std::function &remove, + const QPoint &pos, MacroSegmentList *list, QMenu &menu) +{ + const auto segmentEditIndex = list->IndexAt(pos); + if (segmentEditIndex == -1) { + return; + } + + menu.addAction( + obs_module_text("AdvSceneSwitcher.macroTab.segment.remove"), ss, + [ss, remove, segmentEditIndex]() { + remove(ss, segmentEditIndex); + }); +} + static void setupConextMenu(AdvSceneSwitcher *ss, const QPoint &pos, + std::function remove, std::function expand, std::function collapse, std::function maximize, @@ -1182,6 +1200,8 @@ static void setupConextMenu(AdvSceneSwitcher *ss, const QPoint &pos, setupCopyPasteContextMenuEnry(ss, segmentEdit, menu); menu.addSeparator(); + setupRemoveContextMenuEnry(ss, remove, pos, list, menu); + menu.addSeparator(); setupSegmentLabelContextMenuEntries(segmentEdit, menu); menu.addSeparator(); menu.addAction(obs_module_text("AdvSceneSwitcher.macroTab.expandAll"), @@ -1198,7 +1218,8 @@ static void setupConextMenu(AdvSceneSwitcher *ss, const QPoint &pos, void AdvSceneSwitcher::ShowMacroActionsContextMenu(const QPoint &pos) { - setupConextMenu(this, pos, &AdvSceneSwitcher::ExpandAllActions, + setupConextMenu(this, pos, &AdvSceneSwitcher::RemoveMacroAction, + &AdvSceneSwitcher::ExpandAllActions, &AdvSceneSwitcher::CollapseAllActions, &AdvSceneSwitcher::MaximizeActions, &AdvSceneSwitcher::MinimizeActions, ui->actionsList); @@ -1206,7 +1227,8 @@ void AdvSceneSwitcher::ShowMacroActionsContextMenu(const QPoint &pos) void AdvSceneSwitcher::ShowMacroElseActionsContextMenu(const QPoint &pos) { - setupConextMenu(this, pos, &AdvSceneSwitcher::ExpandAllElseActions, + setupConextMenu(this, pos, &AdvSceneSwitcher::RemoveMacroElseAction, + &AdvSceneSwitcher::ExpandAllElseActions, &AdvSceneSwitcher::CollapseAllElseActions, &AdvSceneSwitcher::MaximizeElseActions, &AdvSceneSwitcher::MinimizeElseActions, @@ -1215,7 +1237,8 @@ void AdvSceneSwitcher::ShowMacroElseActionsContextMenu(const QPoint &pos) void AdvSceneSwitcher::ShowMacroConditionsContextMenu(const QPoint &pos) { - setupConextMenu(this, pos, &AdvSceneSwitcher::ExpandAllConditions, + setupConextMenu(this, pos, &AdvSceneSwitcher::RemoveMacroCondition, + &AdvSceneSwitcher::ExpandAllConditions, &AdvSceneSwitcher::CollapseAllConditions, &AdvSceneSwitcher::MaximizeConditions, &AdvSceneSwitcher::MinimizeConditions,