[glib/wip/oholy/fast-content-type] gfile: Fallback to fast-content-type if content-type is not set
- From: Ondrej Holy <oholy src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/oholy/fast-content-type] gfile: Fallback to fast-content-type if content-type is not set
- Date: Tue, 7 Apr 2020 13:03:23 +0000 (UTC)
commit 461052f66ef4b6a4d1bf29ef5d8c39a5246956c1
Author: Ondrej Holy <oholy redhat com>
Date: Tue Apr 7 14:56:49 2020 +0200
gfile: Fallback to fast-content-type if content-type is not set
The G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE attribute doesn't have to be
always set. See https://gitlab.gnome.org/GNOME/gvfs/-/merge_requests/68
for more details. In that case, the g_file_query_default_handler function
fails with the "No application is registered as handling this file" error.
Let's fallback to the "standard::fast-content-type" attribute instead to
fix issues when opening such files.
https://gitlab.gnome.org/GNOME/nautilus/-/issues/1425
gio/gfile.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/gio/gfile.c b/gio/gfile.c
index 4e6e39827..a2ded14ea 100644
--- a/gio/gfile.c
+++ b/gio/gfile.c
@@ -6839,7 +6839,8 @@ g_file_query_default_handler (GFile *file,
g_free (uri_scheme);
info = g_file_query_info (file,
- G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
0,
cancellable,
error);
@@ -6849,6 +6850,8 @@ g_file_query_default_handler (GFile *file,
appinfo = NULL;
content_type = g_file_info_get_content_type (info);
+ if (content_type == NULL)
+ content_type = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE);
if (content_type)
{
/* Don't use is_native(), as we want to support fuse paths if available */
@@ -6890,6 +6893,8 @@ query_default_handler_query_info_cb (GObject *object,
}
content_type = g_file_info_get_content_type (info);
+ if (content_type == NULL)
+ content_type = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE);
if (content_type)
{
char *path;
@@ -6960,7 +6965,8 @@ g_file_query_default_handler_async (GFile *file,
g_free (uri_scheme);
g_file_query_info_async (file,
- G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
0,
io_priority,
cancellable,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]