From e6874d3e34a919917fa19025cafdb0c64cb855a9 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 24 May 2017 12:09:45 +0100 Subject: [PATCH] Try to respect ordering when dragging and dropping. --- src/tools/dcpomatic_kdm.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc index 95ed07769..0ee8a0786 100644 --- a/src/tools/dcpomatic_kdm.cc +++ b/src/tools/dcpomatic_kdm.cc @@ -395,7 +395,7 @@ private: _dkdm->Delete (from->first); _dkdm_id.erase (from->first); - add_dkdm_view (from->second); + add_dkdm_view (from->second, dynamic_pointer_cast(to->second) ? to->first : optional()); } void add_dkdm_clicked () @@ -446,14 +446,20 @@ private: /** @param dkdm Thing to add. * @param parent Parent group, or 0. */ - void add_dkdm_view (shared_ptr base) + void add_dkdm_view (shared_ptr base, optional previous = optional()) { if (!base->parent()) { /* This is the root group */ _dkdm_id[_dkdm->AddRoot("root")] = base; } else { /* Add base to the view */ - _dkdm_id[_dkdm->AppendItem(dkdm_to_id(base->parent()), std_to_wx(base->name()))] = base; + wxTreeItemId added; + if (previous) { + added = _dkdm->InsertItem(dkdm_to_id(base->parent()), *previous, std_to_wx(base->name())); + } else { + added = _dkdm->AppendItem(dkdm_to_id(base->parent()), std_to_wx(base->name())); + } + _dkdm_id[added] = base; } /* Add children */ -- 2.30.2