summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-05-16 00:09:56 +0000
committerMatthias Clasen <mclasen@redhat.com>2023-05-16 00:09:56 +0000
commite8c7d0e5ec994ed0ff503842ac13ef4fe43e1d76 (patch)
tree41e6eaef4ac2038b7de31999e7627b99a98634db
parent3fb06ca29d71e81cdd8fffb3d79403798fb7a1f0 (diff)
parent133231e12b995202627a227a32acb26627a6cec4 (diff)
downloadgtk+-e8c7d0e5ec994ed0ff503842ac13ef4fe43e1d76.tar.gz
Merge branch 'wip/corey/filesystemmodel' into 'main'
filesystemmodel: Ignore changes on the parent directory Closes #4233 See merge request GNOME/gtk!5970
-rw-r--r--.gitignore1
-rw-r--r--gtk/gtkfilechooserwidget.c4
-rw-r--r--gtk/gtkfilesystemmodel.c4
3 files changed, 8 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 025c6c9c02..050320de0e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/subprojects/*/
+.flatpak-builder/
diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c
index 352e7fbd28..ad3d79ad94 100644
--- a/gtk/gtkfilechooserwidget.c
+++ b/gtk/gtkfilechooserwidget.c
@@ -580,7 +580,10 @@ gtk_file_chooser_widget_finalize (GObject *object)
stop_loading_and_clear_list_model (impl, FALSE);
search_clear_model (impl, FALSE);
recent_clear_model (impl, FALSE);
+ g_clear_object (&impl->recent_model);
+ g_clear_object (&impl->search_model);
g_clear_object (&impl->model_for_search);
+ g_clear_object (&impl->browse_files_model);
g_clear_object (&impl->selection_model);
g_clear_object (&impl->sort_model);
@@ -3961,6 +3964,7 @@ set_list_model (GtkFileChooserWidget *impl,
set_busy_cursor (impl, TRUE);
+ g_clear_object (&impl->browse_files_model);
impl->browse_files_model =
_gtk_file_system_model_new_for_directory (impl->current_folder, MODEL_ATTRIBUTES);
diff --git a/gtk/gtkfilesystemmodel.c b/gtk/gtkfilesystemmodel.c
index a772d67aa6..10c5ec09bc 100644
--- a/gtk/gtkfilesystemmodel.c
+++ b/gtk/gtkfilesystemmodel.c
@@ -747,7 +747,9 @@ gtk_file_system_model_monitor_change (GFileMonitor * monitor,
case G_FILE_MONITOR_EVENT_CREATED:
case G_FILE_MONITOR_EVENT_CHANGED:
case G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED:
- /* We can treat all of these the same way */
+ if (g_file_equal (file, model->dir))
+ return;
+ /* We can treat all children the same way */
g_file_query_info_async (file,
model->attributes,
G_FILE_QUERY_INFO_NONE,