[gtk+/gtk-3-14] GtkFileChooser: Don't crash if invisible files are deleted



commit 23eeb44beb72cc1027dc6ede3e0b7347b465a727
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Dec 11 22:52:59 2014 -0500

    GtkFileChooser: Don't crash if invisible files are deleted
    
    This is a crash that has been around for a long time, as
    can be seen here:
    https://bugzilla.redhat.com/show_bug.cgi?id=1048388
    https://bugzilla.redhat.com/show_bug.cgi?id=984375
    https://bugzilla.redhat.com/show_bug.cgi?id=1159015
    https://bugzilla.redhat.com/show_bug.cgi?id=1059187
    https://bugzilla.redhat.com/show_bug.cgi?id=1122172
    https://bugzilla.redhat.com/show_bug.cgi?id=1016895
    https://bugzilla.redhat.com/show_bug.cgi?id=1133235
    https://bugzilla.redhat.com/show_bug.cgi?id=1077500
    https://bugzilla.redhat.com/show_bug.cgi?id=1054378
    https://bugzilla.redhat.com/show_bug.cgi?id=1173212
    
    Fix suggested by Benjamin Otte.

 gtk/gtkfilesystemmodel.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkfilesystemmodel.c b/gtk/gtkfilesystemmodel.c
index 909359a..5a5fc7f 100644
--- a/gtk/gtkfilesystemmodel.c
+++ b/gtk/gtkfilesystemmodel.c
@@ -1886,6 +1886,7 @@ remove_file (GtkFileSystemModel *model,
             GFile              *file)
 {
   FileModelNode *node;
+  gboolean was_visible;
   guint id;
   guint row;
 
@@ -1897,6 +1898,7 @@ remove_file (GtkFileSystemModel *model,
     return;
 
   node = get_node (model, id);
+  was_visible = node->visible;
   row = node_get_tree_row (model, id);
 
   node_invalidate_index (model, id);
@@ -1912,7 +1914,8 @@ remove_file (GtkFileSystemModel *model,
 
   /* We don't need to resort, as removing a row doesn't change the sorting order of the other rows */
 
-  emit_row_deleted_for_row (model, row);
+  if (was_visible)
+    emit_row_deleted_for_row (model, row);
 }
 
 /**


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]