From 6b740c86f907e171d5bec227677ccf81b0091d73 Mon Sep 17 00:00:00 2001 From: Luca Bacci Date: Sun, 1 May 2022 16:31:47 +0200 Subject: [PATCH 1/2] GtkFileChooserWidget: check for empty instead of NULL GListModel While porting GtkFileChooserWidget from GList to GListModel we did not change some checks for NULL to checks for empty list. Fixes #4851, #4858 --- gtk/gtkfilechooserwidget.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c index be084da421..4c34c49840 100644 --- a/gtk/gtkfilechooserwidget.c +++ b/gtk/gtkfilechooserwidget.c @@ -5448,7 +5448,7 @@ gtk_file_chooser_widget_get_files (GtkFileChooser *chooser) * So we want the selection to be "bar/foo.txt". Jump to the case for the * filename entry to see if that is the case. */ - if (info.result == NULL && impl->location_entry) + if (g_list_model_get_n_items (G_LIST_MODEL (info.result)) == 0 && impl->location_entry) goto file_entry; } else if (impl->location_entry && @@ -5497,7 +5497,7 @@ gtk_file_chooser_widget_get_files (GtkFileChooser *chooser) * then we fall back to the current directory */ if (impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER && - info.result == NULL) + g_list_model_get_n_items (G_LIST_MODEL (info.result)) == 0) { GFile *current_folder; From f0120700dc872043c6828678870446df82382901 Mon Sep 17 00:00:00 2001 From: Luca Bacci Date: Sun, 1 May 2022 16:41:10 +0200 Subject: [PATCH 2/2] GtkFileChooserWidget: return empty GListModel in get_files () instead of NULL --- gtk/gtkfilechooserwidget.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c index 4c34c49840..34e34734d3 100644 --- a/gtk/gtkfilechooserwidget.c +++ b/gtk/gtkfilechooserwidget.c @@ -5466,7 +5466,7 @@ gtk_file_chooser_widget_get_files (GtkFileChooser *chooser) goto out; if (!is_well_formed) - return NULL; + goto empty; if (info.file_from_entry) { @@ -5476,7 +5476,7 @@ gtk_file_chooser_widget_get_files (GtkFileChooser *chooser) else if (!file_list_seen) goto file_list; else - return NULL; + goto empty; } else if (impl->toplevel_last_focus_widget == impl->browse_files_tree_view) goto file_list; @@ -5508,6 +5508,11 @@ gtk_file_chooser_widget_get_files (GtkFileChooser *chooser) } return G_LIST_MODEL (info.result); + +empty: + + g_list_store_remove_all (info.result); + return G_LIST_MODEL (info.result); } /* Shows or hides the filter widgets */