diff options
author | Johannes Mueller <github@johannes-mueller.org> | 2017-08-19 19:45:08 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-08-20 21:09:30 +0200 |
commit | bd4db1e15139df141144310199b73c77d701c4b2 (patch) | |
tree | 49ed7331d6115d9bddcc4cd6a110423acfc299c9 | |
parent | 419b1c1cfdb2f6fee97312ab5b56a8579623534a (diff) |
Remove the template description XMLNode before saving the template
... to avoid that the new template description is concatenated to the old one.
-rw-r--r-- | gtk2_ardour/template_dialog.cc | 10 | ||||
-rw-r--r-- | libs/ardour/route.cc | 1 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 7 |
3 files changed, 10 insertions, 8 deletions
diff --git a/gtk2_ardour/template_dialog.cc b/gtk2_ardour/template_dialog.cc index cce8d2eb3f..6002089aa6 100644 --- a/gtk2_ardour/template_dialog.cc +++ b/gtk2_ardour/template_dialog.cc @@ -256,14 +256,14 @@ TemplateManager::save_template_desc () return; } - XMLNode* desc = tree.root()->child (X_("description")); - if (!desc) { - desc = new XMLNode (X_("description")); - tree.root()->add_child_nocopy (*desc); - } + tree.root()->remove_nodes (X_("description")); + XMLNode* desc = new XMLNode (X_("description")); + XMLNode* dn = new XMLNode (X_("content"), desc_txt); desc->add_child_nocopy (*dn); + tree.root()->add_child_nocopy (*desc); + if (!tree.write ()) { error << string_compose(X_("Could not write to template file \"%1\"."), file_path) << endmsg; return; diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 5cd9b576a5..e89b9b8b91 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -4022,6 +4022,7 @@ Route::save_as_template (const string& path, const string& name, const string& d XMLNode& node (state (false)); node.set_property (X_("name"), name); + node.remove_nodes (X_("description")); if (!description.empty()) { XMLNode* desc = new XMLNode(X_("description")); XMLNode* desc_cont = new XMLNode(X_("content"), description); diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 0bf09f76c6..287822a6a6 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -2414,12 +2414,13 @@ Session::save_template (const string& template_name, const string& description, XMLNode* root; { PBD::Unwinder<std::string> uw (_template_state_dir, template_dir_path); - root = &get_template(); + root = &get_template (); } + root->remove_nodes (X_("description")); if (!description.empty()) { - XMLNode* desc = new XMLNode(X_("description")); - XMLNode* desc_cont = new XMLNode(X_("content"), description); + XMLNode* desc = new XMLNode (X_("description")); + XMLNode* desc_cont = new XMLNode (X_("content"), description); desc->add_child_nocopy (*desc_cont); root->add_child_nocopy (*desc); |