diff options
author | Magnus Bergman <magnus.bergman@snisurset.net> | 2019-10-08 10:21:02 +0200 |
---|---|---|
committer | Simon Steinbeiss <simon.steinbeiss@elfenbeinturm.at> | 2019-10-08 10:22:42 +0200 |
commit | 436c09d51f8c3ae5beffd3aad536bc1c99935222 (patch) | |
tree | 1b3fef0be9d0471f1059e9b63373e3f153333ea0 /libxfsm | |
parent | eec76f6cecae24b2e1b9e99b78bbf2061452d242 (diff) | |
download | xfce4-session-436c09d51f8c3ae5beffd3aad536bc1c99935222.tar.gz |
Sort saved sessions by most recently used (Bug #15338)
Diffstat (limited to 'libxfsm')
-rw-r--r-- | libxfsm/xfsm-util.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libxfsm/xfsm-util.c b/libxfsm/xfsm-util.c index 691753b9..a4d0888e 100644 --- a/libxfsm/xfsm-util.c +++ b/libxfsm/xfsm-util.c @@ -350,6 +350,23 @@ settings_list_sessions_treeview_init (GtkTreeView *treeview) gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); } +static gint +compare_session_atime (XfsmSessionInfo *session1, + XfsmSessionInfo *session2) +{ + if (session1->atime < session2->atime) + return 1; + if (session1->atime > session2->atime) + return -1; + return 0; +} + +static GList * +sort_sessions_on_atime (GList *sessions) +{ + return g_list_sort (sessions, (GCompareFunc) compare_session_atime); +} + void settings_list_sessions_populate (GtkTreeModel *model, GList *sessions) @@ -360,6 +377,8 @@ settings_list_sessions_populate (GtkTreeModel *model, gchar *title; GList *lp; + sessions = sort_sessions_on_atime (sessions); + gtk_list_store_clear (GTK_LIST_STORE (model)); for (lp = sessions; lp != NULL; lp = lp->next) |