summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-03-08 21:57:13 +0000
committerMatthias Clasen <mclasen@redhat.com>2023-03-08 21:57:13 +0000
commit9ca3a52bf0e84b1fdd107a1b1958d17c3986a3e9 (patch)
tree2e0edab995f5268e6e34622b1a5acba35d4bf950
parentf743b9516127970367700112ca7f6cd3857dcf87 (diff)
parent111e8d2808ac99dedb9942386011b9f14d7f3ab5 (diff)
downloadgtk+-9ca3a52bf0e84b1fdd107a1b1958d17c3986a3e9.tar.gz
Merge branch 'file_chooser_stuff' into 'main'
filechooser: two small changes See merge request GNOME/gtk!5619
-rw-r--r--gtk/gtkfilechooserwidget.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c
index baecc10aaa..3a0dc6e41b 100644
--- a/gtk/gtkfilechooserwidget.c
+++ b/gtk/gtkfilechooserwidget.c
@@ -637,28 +637,36 @@ _gtk_file_chooser_extract_recent_folders (GList *infos)
for (l = infos; l; l = l->next)
{
GtkRecentInfo *info = l->data;
- const char *uri;
- GFile *parent;
+ const char *uri, *mime_type;
+ GFile *dir;
GFile *file;
- uri = gtk_recent_info_get_uri (info);
-
- if (!g_str_has_prefix (uri, "file://"))
+ if (!gtk_recent_info_is_local (info))
continue;
+ uri = gtk_recent_info_get_uri (info);
file = g_file_new_for_uri (uri);
- parent = g_file_get_parent (file);
- g_object_unref (file);
- if (parent)
+ mime_type = gtk_recent_info_get_mime_type (info);
+ if (strcmp (mime_type, "inode/directory") != 0)
+ {
+ dir = g_file_get_parent (file);
+ g_object_unref (file);
+ }
+ else
+ {
+ dir = file;
+ }
+
+ if (dir)
{
- if (!g_hash_table_lookup (folders, parent))
+ if (!g_hash_table_lookup (folders, dir))
{
- g_hash_table_insert (folders, parent, (gpointer) 1);
- result = g_list_prepend (result, g_object_ref (parent));
+ g_hash_table_insert (folders, dir, (gpointer) 1);
+ result = g_list_prepend (result, g_object_ref (dir));
}
- g_object_unref (parent);
+ g_object_unref (dir);
}
}
@@ -5996,8 +6004,7 @@ recent_start_loading (GtkFileChooserWidget *impl)
GtkRecentInfo *info = l->data;
GFile *file;
- const char *uri = gtk_recent_info_get_uri (info);
- if (!g_str_has_prefix (uri, "file://"))
+ if (!gtk_recent_info_is_local (info))
continue;
if (gtk_recent_info_get_private_hint (info) &&