[gnome-shell-extensions/wip/fmuellner/53-hide-network-mounts: 80/81] drive-menu: Don't assume mounts without volume are local




commit 75764d9ba951e0b89e55ac788f2b44299f14b84a
Author: Florian Müllner <fmuellner gnome org>
Date:   Mon Feb 5 22:16:09 2018 +0100

    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

 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 5bd9152..59603c8 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() {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]