aboutsummaryrefslogtreecommitdiff
path: root/fiv-sidebar.c
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2022-01-06 08:15:26 +0100
committerPřemysl Eric Janouch <p@janouch.name>2022-01-06 08:39:33 +0100
commitbb67df716cfab257a6309df121e6399ddadcc78a (patch)
treedb9ff5a0ff87819499c2d2aa24eff5e1f9291ab4 /fiv-sidebar.c
parent4cd2978e21e47182948e9875111de56273219b89 (diff)
downloadfiv-bb67df716cfab257a6309df121e6399ddadcc78a.tar.gz
fiv-bb67df716cfab257a6309df121e6399ddadcc78a.tar.xz
fiv-bb67df716cfab257a6309df121e6399ddadcc78a.zip
Mildly improve Ubuntu 20.04 compatibility
Diffstat (limited to 'fiv-sidebar.c')
-rw-r--r--fiv-sidebar.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/fiv-sidebar.c b/fiv-sidebar.c
index c29ef4d..e956d08 100644
--- a/fiv-sidebar.c
+++ b/fiv-sidebar.c
@@ -244,10 +244,21 @@ resolve_location(FivSidebar *self, const char *text)
// Relative paths produce invalid GFile objects with this function.
// And even if they didn't, we have our own root for them.
GFile *file = g_file_parse_name(text);
- if (g_uri_is_valid(text, G_URI_FLAGS_PARSE_RELAXED, NULL) ||
- g_file_peek_path(file))
+ if (g_file_peek_path(file))
return file;
+ // Neither branch looks like a particularly good solution.
+ // Though in general, false positives are preferred over negatives.
+#if GLIB_CHECK_VERSION(2, 66, 0)
+ if (g_uri_is_valid(text, G_URI_FLAGS_PARSE_RELAXED, NULL))
+ return file;
+#else
+ gchar *scheme = g_uri_parse_scheme(text);
+ g_free(scheme);
+ if (scheme)
+ return file;
+#endif
+
GFile *absolute = g_file_get_child_for_display_name(
fiv_io_model_get_location(self->model), text, NULL);
if (!absolute)