From 3f2d5bcbda2b9ddeeab3e39e87e796a8b34daa6a Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Dec 2025 00:29:23 +0100 Subject: [PATCH] Sort strips to import in import dialog --- gtk2_ardour/strip_import_dialog.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/strip_import_dialog.cc b/gtk2_ardour/strip_import_dialog.cc index 76b4f12bc2..ad80f48313 100644 --- a/gtk2_ardour/strip_import_dialog.cc +++ b/gtk2_ardour/strip_import_dialog.cc @@ -453,7 +453,7 @@ StripImportDialog::refill_import_table () return _route_map.at (a.first).pi.order () < _route_map.at (b.first).pi.order (); } catch (...) { } - return a.second < b.second; + return a.first < b.first; }); /* Refill table */ @@ -641,7 +641,8 @@ StripImportDialog::import_all_strips (bool only_visible) { _import_map.clear (); - int64_t next_id = std::numeric_limits::max () - 1 - _extern_map.size (); + std::vector> sorted_eid; + for (auto& [eid, einfo] : _extern_map) { if (einfo.pi.special () || (only_visible && einfo.pi.hidden ())) { continue; @@ -651,6 +652,15 @@ StripImportDialog::import_all_strips (bool only_visible) continue; } #endif + sorted_eid.push_back (make_pair (eid, einfo.pi.order ())); + } + + std::sort (sorted_eid.begin (), sorted_eid.end (), [=] (auto& a, auto& b) { + return a.second < b.second; + }); + + int64_t next_id = std::numeric_limits::max () - 1 - sorted_eid.size (); + for (auto const& [eid, _] : sorted_eid) { PBD::ID next_new = PBD::ID (next_id++); _import_map[next_new] = eid; }