Show ranges in more sensible order in export dialog.
Show ranges in order in which they appear on the timeline in export dialog, but always show the session range first.
This commit is contained in:
parent
aced854ce7
commit
1d282f316f
@ -105,6 +105,9 @@ ExportTimespanSelector::ExportTimespanSelector (ARDOUR::Session * session, Profi
|
||||
/* Range view */
|
||||
|
||||
range_list = Gtk::ListStore::create (range_cols);
|
||||
// order by location start times
|
||||
range_list->set_sort_column(range_cols.location, Gtk::SORT_ASCENDING);
|
||||
range_list->set_sort_func(range_cols.location, sigc::mem_fun(*this, &ExportTimespanSelector::location_sorter));
|
||||
range_view.set_model (range_list);
|
||||
range_view.set_headers_visible (true);
|
||||
}
|
||||
@ -114,6 +117,22 @@ ExportTimespanSelector::~ExportTimespanSelector ()
|
||||
|
||||
}
|
||||
|
||||
int
|
||||
ExportTimespanSelector::location_sorter(Gtk::TreeModel::iterator a, Gtk::TreeModel::iterator b)
|
||||
{
|
||||
Location *l1 = (*a)[range_cols.location];
|
||||
Location *l2 = (*b)[range_cols.location];
|
||||
const Location *ls = _session->locations()->session_range_location();
|
||||
|
||||
// always sort session range first
|
||||
if (l1 == ls)
|
||||
return -1;
|
||||
if (l2 == ls)
|
||||
return +1;
|
||||
|
||||
return l1->start() - l2->start();
|
||||
}
|
||||
|
||||
void
|
||||
ExportTimespanSelector::add_range_to_selection (ARDOUR::Location const * loc)
|
||||
{
|
||||
|
@ -84,6 +84,7 @@ class ExportTimespanSelector : public Gtk::VBox, public ARDOUR::SessionHandlePtr
|
||||
void update_range_name (std::string const & path, std::string const & new_text);
|
||||
|
||||
void set_selection_state_of_all_timespans (bool);
|
||||
int location_sorter(Gtk::TreeModel::iterator a, Gtk::TreeModel::iterator b);
|
||||
|
||||
/*** GUI components ***/
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user