From 561b8aeb03493b5c0813f52b285898ebae648462 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 5 Feb 2018 22:16:09 +0100 Subject: [PATCH] drive-menu: Don't assume mounts without volume are local The intention of the code is to only expose actually plugged in devices rather than network mounts, but the existing heuristics are based on GVolume and simply assume a local mount where there's no associated volume. Fill that gap by querying the ::remote filesystem attribute in that case. https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/53 Part-of: (cherry picked from commit 7d6670ce3c1716bdaf2cba7e7fa942cceff4cc31) --- extensions/drive-menu/extension.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/extensions/drive-menu/extension.js b/extensions/drive-menu/extension.js index 5bd91522..59603c80 100644 --- a/extensions/drive-menu/extension.js +++ b/extensions/drive-menu/extension.js @@ -62,13 +62,21 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem { let volume = this.mount.get_volume(); - if (!volume) { - // probably a GDaemonMount, could be network or - // local, but we can't tell; assume it's local for now - return true; + if (volume) + return volume.get_identifier('class') !== 'network'; + + const root = this.mount.get_root(); + + try { + const attr = Gio.FILE_ATTRIBUTE_FILESYSTEM_REMOTE; + const info = root.query_filesystem_info(attr, null); + return !info.get_attribute_boolean(attr); + } catch (e) { + log(`Failed to query filesystem: ${e.message}`); } - return volume.get_identifier('class') !== 'network'; + // Hack, fall back to looking at GType + return Gio._LocalFilePrototype.isPrototypeOf(root); } _syncVisibility() {