apps-menu: 'Touch' copied .desktop file after updating attributes

At least for now, nautilus' file monitor is blind to certain metadata
updates:
https://git.gnome.org/browse/nautilus/tree/src/nautilus-mime-actions.c#n1537

So in order for the changes in the previous patch to take effect
immediately, we need to force nautilus to reload the file info.
Achieve this by updating the access time of the newly copied file
after marking it as trusted.

https://bugzilla.gnome.org/show_bug.cgi?id=781596
This commit is contained in:
Florian Müllner
2017-04-24 17:22:26 +02:00
parent 5cb2657df7
commit 8453cf05a7
+20
View File
@@ -331,6 +331,23 @@ const DesktopTarget = new Lang.Class({
return source._app.app_info;
},
_touchFile: function(file) {
let queryFlags = Gio.FileQueryInfoFlags.NONE;
let ioPriority = GLib.PRIORITY_DEFAULT;
let info = new Gio.FileInfo();
info.set_attribute_uint64(Gio.FILE_ATTRIBUTE_TIME_ACCESS,
GLib.get_real_time());
file.set_attributes_async (info, queryFlags, ioPriority, null,
(o, res) => {
try {
o.set_attributes_finish(res);
} catch(e) {
log('Failed to update access time: ' + e.message);
}
});
},
_markTrusted: function(file) {
let modeAttr = Gio.FILE_ATTRIBUTE_UNIX_MODE;
let trustedAttr = 'metadata::trusted';
@@ -348,6 +365,9 @@ const DesktopTarget = new Lang.Class({
file.set_attributes_async (info, queryFlags, ioPriority, null,
(o, res) => {
o.set_attributes_finish(res);
// Hack: force nautilus to reload file info
this._touchFile(file);
});
} catch(e) {
log('Failed to mark file as trusted: ' + e.message);