Keep model up to date when reordering KDMs.
[dcpomatic.git] / src / lib / dkdm_wrapper.cc
index 809739e06fd471d14a564fbc1de468d6a1f93f59..76f9217aac4a64d3b6f589aa20290511a66ddad4 100644 (file)
@@ -71,10 +71,18 @@ DKDMGroup::as_xml (xmlpp::Element* node) const
 }
 
 void
-DKDMGroup::add (shared_ptr<DKDMBase> child)
+DKDMGroup::add (shared_ptr<DKDMBase> child, shared_ptr<DKDM> previous)
 {
        DCPOMATIC_ASSERT (child);
-       _children.push_back (child);
+       if (previous) {
+               list<shared_ptr<DKDMBase> >::iterator i = find (_children.begin(), _children.end(), previous);
+               if (i != _children.end ()) {
+                       ++i;
+               }
+               _children.insert (i, child);
+       } else {
+               _children.push_back (child);
+       }
        child->set_parent (dynamic_pointer_cast<DKDMGroup> (shared_from_this ()));
 }