diff --git a/libxfsm/xfsm-util.c b/libxfsm/xfsm-util.c index 691753b..a4d0888 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)