summaryrefslogtreecommitdiff
path: root/libxfsm
diff options
context:
space:
mode:
authorMagnus Bergman <magnus.bergman@snisurset.net>2019-10-08 10:21:02 +0200
committerSimon Steinbeiss <simon.steinbeiss@elfenbeinturm.at>2019-10-08 10:22:42 +0200
commit436c09d51f8c3ae5beffd3aad536bc1c99935222 (patch)
tree1b3fef0be9d0471f1059e9b63373e3f153333ea0 /libxfsm
parenteec76f6cecae24b2e1b9e99b78bbf2061452d242 (diff)
downloadxfce4-session-436c09d51f8c3ae5beffd3aad536bc1c99935222.tar.gz
Sort saved sessions by most recently used (Bug #15338)
Diffstat (limited to 'libxfsm')
-rw-r--r--libxfsm/xfsm-util.c19
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)