[gtk+] Avoid a critical in the file chooser



commit 898f0fa0b912ea765eae451fb4e07735c03bc365
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed May 21 22:50:48 2014 -0400

    Avoid a critical in the file chooser
    
    Hiding the location entry was causing criticals, because
    the completion was updated after the widget has already
    been disposed.
    https://bugzilla.gnome.org/show_bug.cgi?id=720330

 gtk/gtkfilechooserentry.c |   24 ++++++++++++++----------
 1 files changed, 14 insertions(+), 10 deletions(-)
---
diff --git a/gtk/gtkfilechooserentry.c b/gtk/gtkfilechooserentry.c
index 526895b..20279e0 100644
--- a/gtk/gtkfilechooserentry.c
+++ b/gtk/gtkfilechooserentry.c
@@ -125,18 +125,22 @@ gtk_file_chooser_entry_dispatch_properties_changed (GObject     *object,
 
   G_OBJECT_CLASS (_gtk_file_chooser_entry_parent_class)->dispatch_properties_changed (object, n_pspecs, 
pspecs);
 
-  /* What we are after: The text in front of the cursor was modified.
-   * Unfortunately, there's no other way to catch this. */
-
-  for (i = 0; i < n_pspecs; i++)
+  /* Don't do this during or after disposal */
+  if (gtk_widget_get_parent (GTK_WIDGET (object)) != NULL)
     {
-      if (pspecs[i]->name == I_("cursor-position") ||
-          pspecs[i]->name == I_("selection-bound") ||
-          pspecs[i]->name == I_("text"))
+      /* What we are after: The text in front of the cursor was modified.
+       * Unfortunately, there's no other way to catch this.
+       */
+      for (i = 0; i < n_pspecs; i++)
         {
-          set_complete_on_load (chooser_entry, FALSE);
-          refresh_current_folder_and_file_part (chooser_entry);
-          break;
+          if (pspecs[i]->name == I_("cursor-position") ||
+              pspecs[i]->name == I_("selection-bound") ||
+              pspecs[i]->name == I_("text"))
+            {
+              set_complete_on_load (chooser_entry, FALSE);
+              refresh_current_folder_and_file_part (chooser_entry);
+              break;
+            }
         }
     }
 }


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