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




commit 5b3ad1b668cfad16ae44f3c4598f3b909fbd821c
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 e516066..c18c9bd 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]