d7f0747
Index: gtk/gtksearchenginesimple.c
d7f0747
===================================================================
d7f0747
--- gtk/gtksearchenginesimple.c	(revision 18864)
d7f0747
+++ gtk/gtksearchenginesimple.c	(working copy)
d7f0747
@@ -72,19 +72,27 @@ struct _GtkSearchEngineSimplePrivate 
d7f0747
 G_DEFINE_TYPE (GtkSearchEngineSimple, _gtk_search_engine_simple, GTK_TYPE_SEARCH_ENGINE);
d7f0747
 
d7f0747
 static void
d7f0747
-finalize (GObject *object)
d7f0747
+gtk_search_engine_simple_dispose (GObject *object)
d7f0747
 {
d7f0747
   GtkSearchEngineSimple *simple;
d7f0747
+  GtkSearchEngineSimplePrivate *priv;
d7f0747
   
d7f0747
   simple = GTK_SEARCH_ENGINE_SIMPLE (object);
d7f0747
+  priv = simple->priv;
d7f0747
   
d7f0747
-  if (simple->priv->query) 
d7f0747
+  if (priv->query) 
d7f0747
+    {
d7f0747
+      g_object_unref (priv->query);
d7f0747
+      priv->query = NULL;
d7f0747
+    }
d7f0747
+
d7f0747
+  if (priv->active_search)
d7f0747
     {
d7f0747
-      g_object_unref (simple->priv->query);
d7f0747
-      simple->priv->query = NULL;
d7f0747
+      priv->active_search->cancelled = TRUE;
d7f0747
+      priv->active_search = NULL;
d7f0747
     }
d7f0747
   
d7f0747
-  G_OBJECT_CLASS (_gtk_search_engine_simple_parent_class)->finalize (object);
d7f0747
+  G_OBJECT_CLASS (_gtk_search_engine_simple_parent_class)->dispose (object);
d7f0747
 }
d7f0747
 
d7f0747
 static SearchThreadData *
d7f0747
@@ -131,12 +139,10 @@ search_thread_done_idle (gpointer user_d
d7f0747
 
d7f0747
   data = user_data;
d7f0747
   
d7f0747
-  if (!data->cancelled) 
d7f0747
-    {
d7f0747
-      _gtk_search_engine_finished (GTK_SEARCH_ENGINE (data->engine));
d7f0747
-      data->engine->priv->active_search = NULL;
d7f0747
-    }
d7f0747
-  
d7f0747
+  if (!data->cancelled)
d7f0747
+    _gtk_search_engine_finished (GTK_SEARCH_ENGINE (data->engine));
d7f0747
+     
d7f0747
+  data->engine->priv->active_search = NULL;
d7f0747
   search_thread_data_free (data);
d7f0747
   
d7f0747
   return FALSE;
d7f0747
@@ -181,6 +187,7 @@ send_batch (SearchThreadData *data)
d7f0747
       hits = g_new (SearchHits, 1);
d7f0747
       hits->uris = data->uri_hits;
d7f0747
       hits->thread_data = data;
d7f0747
+      
d7f0747
       gdk_threads_add_idle (search_thread_add_hits_idle, hits);
d7f0747
     }
d7f0747
   data->uri_hits = NULL;
d7f0747
@@ -349,7 +356,7 @@ _gtk_search_engine_simple_class_init (Gt
d7f0747
   GtkSearchEngineClass *engine_class;
d7f0747
   
d7f0747
   gobject_class = G_OBJECT_CLASS (class);
d7f0747
-  gobject_class->finalize = finalize;
d7f0747
+  gobject_class->dispose = gtk_search_engine_simple_dispose;
d7f0747
   
d7f0747
   engine_class = GTK_SEARCH_ENGINE_CLASS (class);
d7f0747
   engine_class->set_query = gtk_search_engine_simple_set_query;
d7f0747
Index: gtk/gtkfilechooserdefault.c
d7f0747
===================================================================
d7f0747
--- gtk/gtkfilechooserdefault.c	(revision 18864)
d7f0747
+++ gtk/gtkfilechooserdefault.c	(working copy)
d7f0747
@@ -8994,6 +8994,8 @@ search_stop_searching (GtkFileChooserDef
d7f0747
   
d7f0747
   if (impl->search_engine)
d7f0747
     {
d7f0747
+      _gtk_search_engine_stop (impl->search_engine);
d7f0747
+      
d7f0747
       g_object_unref (impl->search_engine);
d7f0747
       impl->search_engine = NULL;
d7f0747
     }