filesystemmodel: Ignore changes on the parent directory
authorCorey Berla <corey@berla.me>
Mon, 15 May 2023 20:10:21 +0000 (13:10 -0700)
committerCorey Berla <corey@berla.me>
Mon, 15 May 2023 22:50:40 +0000 (15:50 -0700)
The filesystemmodel tracks changes and additions to child files
through G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED.  This event will also
occur if the parent directory is changed.  Since the parent directory
doesn't exist in the model, it creates a non-existent item.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4233
gtk/gtkfilesystemmodel.c

index a772d67aa650f3b8e5807072844b34b1a8711fe1..10c5ec09bc75c03542a3398fac91d8859972f9e2 100644 (file)
@@ -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,