summaryrefslogtreecommitdiff
path: root/src/baobab-location-list.vala
diff options
context:
space:
mode:
authorStefano Facchini <stefano.facchini@gmail.com>2012-10-01 22:52:15 +0200
committerStefano Facchini <stefano.facchini@gmail.com>2012-10-02 18:09:14 +0200
commit6b1d976a47054b7a15c725355b7c21b51dbe3bc2 (patch)
tree4265d4261b58bfd793a6ef258d063be53262f055 /src/baobab-location-list.vala
parentc74a1aa258099db35234c23ed86ccae251dd3054 (diff)
downloadbaobab-6b1d976a47054b7a15c725355b7c21b51dbe3bc2.tar.gz
Sort recent info by MRU
Otherwise they show up in creation order https://bugzilla.gnome.org/show_bug.cgi?id=685252
Diffstat (limited to 'src/baobab-location-list.vala')
-rw-r--r--src/baobab-location-list.vala27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/baobab-location-list.vala b/src/baobab-location-list.vala
index a033a64..469e080 100644
--- a/src/baobab-location-list.vala
+++ b/src/baobab-location-list.vala
@@ -142,17 +142,24 @@ namespace Baobab {
Gtk.RecentManager recent_manager = Gtk.RecentManager.get_default ();
List<Gtk.RecentInfo> recent_items = recent_manager.get_items ();
- int n_recents = 0;
- foreach (var info in recent_items) {
- if (n_recents >= MAX_RECENT_LOCATIONS) {
- break;
- }
- if (info.has_group ("baobab") && info.exists ()) {
- if (!already_present (File.new_for_uri (info.get_uri ()))) {
- locations.append (new Location.for_recent_info (info));
- n_recents++;
- }
+ unowned List<Gtk.RecentInfo> iter = recent_items;
+ while (iter != null) {
+ unowned List<Gtk.RecentInfo> next = iter.next;
+ if (!iter.data.has_group ("baobab") || !iter.data.exists () || already_present (File.new_for_uri (iter.data.get_uri ()))) {
+ recent_items.remove_link (iter);
}
+ iter = next;
+ }
+
+ recent_items.sort ((a, b) => {
+ return (int)(b.get_modified () - a.get_modified ());
+ });
+
+ recent_items.nth (MAX_RECENT_LOCATIONS - 1).next = null;
+ recent_items.reverse ();
+
+ foreach (var info in recent_items) {
+ locations.append (new Location.for_recent_info (info));
}
update ();