diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-05-24 12:09:45 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-05-24 12:23:59 +0100 |
| commit | e6874d3e34a919917fa19025cafdb0c64cb855a9 (patch) | |
| tree | 78dc51ea7a5cc0c3d1161ecefcc205d78ec970a4 /src | |
| parent | ba049fdab4a47023d6d5ee8b5ff9bbb710afbabb (diff) | |
Try to respect ordering when dragging and dropping.
Diffstat (limited to 'src')
| -rw-r--r-- | src/tools/dcpomatic_kdm.cc | 12 |
1 files 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<DKDM>(to->second) ? to->first : optional<wxTreeItemId>()); } 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<DKDMBase> base) + void add_dkdm_view (shared_ptr<DKDMBase> base, optional<wxTreeItemId> previous = optional<wxTreeItemId>()) { 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 */ |
