summaryrefslogtreecommitdiff
path: root/gtk2_ardour/session_dialog.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-09-16 18:59:04 +0200
committerRobin Gareus <robin@gareus.org>2015-09-16 18:59:04 +0200
commitd6029f92856c7647c52042165c9a97f47a8f99ac (patch)
tree43e7cf1e0a8af03dc8a16ae79614bd4ee31de8ec /gtk2_ardour/session_dialog.cc
parentb3e447f4215ed18ce362af95ff486630d0ef529f (diff)
remeber recent-session sort-column
Diffstat (limited to 'gtk2_ardour/session_dialog.cc')
-rw-r--r--gtk2_ardour/session_dialog.cc19
1 files changed, 18 insertions, 1 deletions
diff --git a/gtk2_ardour/session_dialog.cc b/gtk2_ardour/session_dialog.cc
index aca3f66fa9..ad50ecf92d 100644
--- a/gtk2_ardour/session_dialog.cc
+++ b/gtk2_ardour/session_dialog.cc
@@ -321,6 +321,8 @@ SessionDialog::setup_initial_choice_box ()
recent_label.set_markup (string_compose ("<span weight=\"bold\" size=\"large\">%1</span>", _("Recent Sessions")));
recent_session_model = TreeStore::create (recent_session_columns);
+ recent_session_model->signal_sort_column_changed().connect (sigc::mem_fun (*this, &SessionDialog::recent_session_sort_changed));
+
recent_session_display.set_model (recent_session_model);
recent_session_display.append_column (_("Session Name"), recent_session_columns.visible_name);
@@ -750,16 +752,31 @@ SessionDialog::redisplay_recent_sessions ()
Gtk::TreeView::Column* pColumn;
if ((pColumn = recent_session_display.get_column (0))) { // name
pColumn->set_sort_column (recent_session_columns.visible_name);
- pColumn->set_sort_indicator (true);
}
if ((pColumn = recent_session_display.get_column (3))) { // date
pColumn->set_sort_column (recent_session_columns.time_modified); // unixtime
}
+ const int32_t sort = ARDOUR_UI::config()->get_recent_session_sort();
+ recent_session_model->set_sort_column (abs (sort), sort < 0 ? Gtk::SORT_DESCENDING : Gtk::SORT_ASCENDING);
+
return session_snapshot_count;
}
void
+SessionDialog::recent_session_sort_changed ()
+{
+ int column;
+ SortType order;
+ if (recent_session_model->get_sort_column_id (column, order)) {
+ int32_t sort = column * (order == Gtk::SORT_DESCENDING ? -1 : 1);
+ if (sort != ARDOUR_UI::config()->get_recent_session_sort()) {
+ ARDOUR_UI::config()->set_recent_session_sort(sort);
+ }
+ }
+}
+
+void
SessionDialog::recent_session_row_selected ()
{
if (recent_session_display.get_selection()->count_selected_rows() > 0) {