Filter out shadow mounts
svn path=/trunk/; revision=21838
This commit is contained in:
parent
eb56320d4e
commit
43c0ce8971
@ -1,4 +1,11 @@
|
|||||||
2008-12-01 Matthisa Clasen <mclasen@redhat.com>
|
2008-12-01 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
Bug 555334 – connected server feature
|
||||||
|
|
||||||
|
* gtk/gtkfilesystem.c (get_volumes_list): Filter out shadow mounts.
|
||||||
|
Patch by David Zeuthen.
|
||||||
|
|
||||||
|
2008-12-01 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkentry.c: Revert an accidental change that sneaked
|
* gtk/gtkentry.c: Revert an accidental change that sneaked
|
||||||
in with the last commit.
|
in with the last commit.
|
||||||
|
@ -362,6 +362,39 @@ bookmarks_file_changed (GFileMonitor *monitor,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
mount_referenced_by_volume_activation_root (GList *volumes, GMount *mount)
|
||||||
|
{
|
||||||
|
GList *l;
|
||||||
|
GFile *mount_root;
|
||||||
|
gboolean ret;
|
||||||
|
|
||||||
|
ret = FALSE;
|
||||||
|
|
||||||
|
mount_root = g_mount_get_root (mount);
|
||||||
|
|
||||||
|
for (l = volumes; l != NULL; l = l->next)
|
||||||
|
{
|
||||||
|
GVolume *volume = G_VOLUME (l->data);
|
||||||
|
GFile *volume_activation_root;
|
||||||
|
|
||||||
|
volume_activation_root = g_volume_get_activation_root (volume);
|
||||||
|
if (volume_activation_root != NULL)
|
||||||
|
{
|
||||||
|
if (g_file_has_prefix (volume_activation_root, mount_root))
|
||||||
|
{
|
||||||
|
ret = TRUE;
|
||||||
|
g_object_unref (volume_activation_root);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
g_object_unref (volume_activation_root);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g_object_unref (mount_root);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
get_volumes_list (GtkFileSystem *file_system)
|
get_volumes_list (GtkFileSystem *file_system)
|
||||||
{
|
{
|
||||||
@ -468,8 +501,6 @@ get_volumes_list (GtkFileSystem *file_system)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_list_free (volumes);
|
|
||||||
|
|
||||||
/* add mounts that has no volume (/etc/mtab mounts, ftp, sftp,...) */
|
/* add mounts that has no volume (/etc/mtab mounts, ftp, sftp,...) */
|
||||||
mounts = g_volume_monitor_get_mounts (priv->volume_monitor);
|
mounts = g_volume_monitor_get_mounts (priv->volume_monitor);
|
||||||
|
|
||||||
@ -484,10 +515,20 @@ get_volumes_list (GtkFileSystem *file_system)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* if there's exists one or more volumes with an activation root inside the mount,
|
||||||
|
* don't display the mount
|
||||||
|
*/
|
||||||
|
if (mount_referenced_by_volume_activation_root (volumes, mount))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* show this mount */
|
/* show this mount */
|
||||||
priv->volumes = g_slist_prepend (priv->volumes, g_object_ref (mount));
|
priv->volumes = g_slist_prepend (priv->volumes, g_object_ref (mount));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_list_free (volumes);
|
||||||
|
|
||||||
g_list_free (mounts);
|
g_list_free (mounts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user