diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-03-08 21:57:13 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-03-08 21:57:13 +0000 |
commit | 9ca3a52bf0e84b1fdd107a1b1958d17c3986a3e9 (patch) | |
tree | 2e0edab995f5268e6e34622b1a5acba35d4bf950 | |
parent | f743b9516127970367700112ca7f6cd3857dcf87 (diff) | |
parent | 111e8d2808ac99dedb9942386011b9f14d7f3ab5 (diff) | |
download | gtk+-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.c | 35 |
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) && |