mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-10-02 14:03:39 +00:00
file: add parent param to remote+preview method
Allow passing a file's parent to get_filesystem_use_preview and get_filesystem_remote. This resolves the multi-level parent checking discussed in [1], by only checking one parent at most. [1] https://gitlab.gnome.org/GNOME/nautilus/-/issues/3336
This commit is contained in:
parent
1517233558
commit
928055c842
|
@ -4405,66 +4405,57 @@ get_default_file_icon (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static GFilesystemPreviewType
|
static GFilesystemPreviewType
|
||||||
get_filesystem_use_preview (NautilusFile *file)
|
get_filesystem_use_preview (NautilusFile *file,
|
||||||
|
NautilusFile *parent)
|
||||||
{
|
{
|
||||||
if (file->details->filesystem_info_is_up_to_date)
|
if (file->details->filesystem_info_is_up_to_date)
|
||||||
{
|
{
|
||||||
return file->details->filesystem_use_preview;
|
return file->details->filesystem_use_preview;
|
||||||
}
|
}
|
||||||
|
else if (parent != NULL && parent->details->filesystem_info_is_up_to_date)
|
||||||
|
{
|
||||||
|
return parent->details->filesystem_use_preview;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
g_autoptr (NautilusFile) parent = nautilus_file_get_parent (file);
|
return G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS;
|
||||||
|
|
||||||
if (parent != NULL && file->details->filesystem_info_is_up_to_date)
|
|
||||||
{
|
|
||||||
return parent->details->filesystem_use_preview;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
get_filesystem_remote (NautilusFile *file)
|
get_filesystem_remote (NautilusFile *file,
|
||||||
|
NautilusFile *parent)
|
||||||
{
|
{
|
||||||
if (file->details->filesystem_info_is_up_to_date)
|
if (file->details->filesystem_info_is_up_to_date)
|
||||||
{
|
{
|
||||||
return file->details->filesystem_remote;
|
return file->details->filesystem_remote;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
g_autoptr (NautilusFile) parent = NULL;
|
|
||||||
|
|
||||||
parent = nautilus_file_get_parent (file);
|
g_autoptr (NautilusFile) tmp_parent = NULL;
|
||||||
if (parent != NULL && file->details->filesystem_info_is_up_to_date)
|
|
||||||
{
|
if (parent == NULL)
|
||||||
return parent->details->filesystem_remote;
|
{
|
||||||
}
|
tmp_parent = nautilus_file_get_parent (file);
|
||||||
|
parent = tmp_parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
if (parent != NULL && parent->details->filesystem_info_is_up_to_date)
|
||||||
|
{
|
||||||
|
return parent->details->filesystem_remote;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
get_speed_tradeoff_preference_for_file (NautilusFile *file,
|
get_speed_tradeoff_preference_for_file (NautilusFile *file,
|
||||||
NautilusSpeedTradeoffValue value)
|
NautilusSpeedTradeoffValue value)
|
||||||
{
|
{
|
||||||
GFilesystemPreviewType use_preview;
|
g_autoptr (NautilusFile) parent = file->details->filesystem_info_is_up_to_date ?
|
||||||
g_autoptr (NautilusFile) parent = NULL;
|
NULL : nautilus_file_get_parent (file);
|
||||||
NautilusFile *preffered_file = file;
|
GFilesystemPreviewType use_preview = get_filesystem_use_preview (file, parent);
|
||||||
|
|
||||||
g_return_val_if_fail (NAUTILUS_IS_FILE (file), FALSE);
|
|
||||||
|
|
||||||
/* If the info is not already available, it's better to share the parent
|
|
||||||
* between the filesystem info check functions then to let both parse it
|
|
||||||
* twice. */
|
|
||||||
if (!file->details->filesystem_info_is_up_to_date)
|
|
||||||
{
|
|
||||||
parent = nautilus_file_get_parent (file);
|
|
||||||
preffered_file = parent != NULL ? parent : file;
|
|
||||||
}
|
|
||||||
|
|
||||||
use_preview = get_filesystem_use_preview (preffered_file);
|
|
||||||
|
|
||||||
if (value == NAUTILUS_SPEED_TRADEOFF_ALWAYS)
|
if (value == NAUTILUS_SPEED_TRADEOFF_ALWAYS)
|
||||||
{
|
{
|
||||||
|
@ -4496,7 +4487,7 @@ get_speed_tradeoff_preference_for_file (NautilusFile *file,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* only local files */
|
/* only local files */
|
||||||
return !get_filesystem_remote (preffered_file);
|
return !get_filesystem_remote (file, parent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7428,7 +7419,7 @@ nautilus_file_is_remote (NautilusFile *file)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (NAUTILUS_IS_FILE (file), FALSE);
|
g_return_val_if_fail (NAUTILUS_IS_FILE (file), FALSE);
|
||||||
|
|
||||||
return get_filesystem_remote (file);
|
return get_filesystem_remote (file, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue