diff --git a/src/visual_tool.cpp b/src/visual_tool.cpp index 81fef285f..29f0579d5 100644 --- a/src/visual_tool.cpp +++ b/src/visual_tool.cpp @@ -527,6 +527,20 @@ void VisualToolBase::SetSelectedOverride(std::string const& tag, std::string con SetOverride(line, tag, value); } +void VisualToolBase::RemoveOverride(AssDialogue *line, std::string const& tag) { + if (!line) return; + auto blocks = line->ParseTags(); + for (auto ovr : blocks | agi::of_type()) { + for (size_t i = 0; i < ovr->Tags.size(); i++) { + if (tag == ovr->Tags[i].Name) { + ovr->Tags.erase(ovr->Tags.begin() + i); + i--; + } + } + } + line->UpdateText(blocks); +} + void VisualToolBase::SetOverride(AssDialogue* line, std::string const& tag, std::string const& value) { if (!line) return; diff --git a/src/visual_tool.h b/src/visual_tool.h index a8d518021..1a3c1b1c4 100644 --- a/src/visual_tool.h +++ b/src/visual_tool.h @@ -130,6 +130,7 @@ protected: void GetLineClip(AssDialogue *diag, Vector2D &p1, Vector2D &p2, bool &inverse); std::string GetLineVectorClip(AssDialogue *diag, int &scale, bool &inverse); + void RemoveOverride(AssDialogue *line, std::string const& tag); void SetOverride(AssDialogue* line, std::string const& tag, std::string const& value); void SetSelectedOverride(std::string const& tag, std::string const& value);