forked from AuroraMiddleware/gtk
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
|
||||
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
|
||||
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,...) */
|
||||
mounts = g_volume_monitor_get_mounts (priv->volume_monitor);
|
||||
|
||||
@ -484,10 +515,20 @@ get_volumes_list (GtkFileSystem *file_system)
|
||||
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 */
|
||||
priv->volumes = g_slist_prepend (priv->volumes, g_object_ref (mount));
|
||||
}
|
||||
|
||||
g_list_free (volumes);
|
||||
|
||||
g_list_free (mounts);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user