From 35953b5371ed82a5e5d45724e6d743fa088982ea Mon Sep 17 00:00:00 2001 From: Ondrej Holy Date: Tue, 7 Apr 2020 14:56:49 +0200 Subject: [PATCH] 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,