summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2017-01-19 16:11:26 +0100
committerOndrej Holy <oholy@redhat.com>2017-02-13 14:26:52 +0100
commitfebe35c3f538cb01916c0b8e3b006fda3dedb7b4 (patch)
tree48d414510de266638b31fa09f61fdb9baf689bff
parent2417271df21aa6ae3c931c0d6840107460182b23 (diff)
downloadgvfs-febe35c3f538cb01916c0b8e3b006fda3dedb7b4.tar.gz
recent: Set G_FILE_ATTRIBUTE_RECENT_MODIFED attribute
G_FILE_ATTRIBUTE_TIME_ACCESS is used for sorting currently, however, it causes troubles, because some daemons (i.e. dropbox) access files and updates its timestamps itself. This attribute propagates time when the metadata was last changed, which is what we need for sorting in client applications. https://bugzilla.gnome.org/show_bug.cgi?id=777507
-rw-r--r--daemon/gvfsbackendrecent.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/daemon/gvfsbackendrecent.c b/daemon/gvfsbackendrecent.c
index ad75e2af..14706d4d 100644
--- a/daemon/gvfsbackendrecent.c
+++ b/daemon/gvfsbackendrecent.c
@@ -31,6 +31,7 @@ typedef struct {
char *uri;
char *display_name;
GFile *file;
+ time_t modified;
} RecentItem;
struct OPAQUE_TYPE__GVfsBackendRecent
@@ -318,6 +319,9 @@ recent_backend_add_info (RecentItem *item,
g_file_info_set_attribute_boolean (info,
G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE,
TRUE);
+
+ /* G_FILE_ATTRIBUTE_RECENT_MODIFIED */
+ g_file_info_set_attribute_int64 (info, "recent::modified", item->modified);
}
static gboolean
@@ -376,6 +380,7 @@ recent_item_update (RecentItem *item,
gboolean changed = FALSE;
const char *uri;
const char *display_name;
+ time_t modified;
uri = gtk_recent_info_get_uri (info);
if (g_strcmp0 (item->uri, uri) != 0)
@@ -396,6 +401,13 @@ recent_item_update (RecentItem *item,
item->display_name = g_strdup (display_name);
}
+ modified = gtk_recent_info_get_modified (info);
+ if (item->modified != modified)
+ {
+ changed = TRUE;
+ item->modified = modified;
+ }
+
return changed;
}