--- gtk+2.0-2.8.17-clean/gtk/gtkfilechooserdefault.c	2006-03-29 07:40:31.000000000 +0200
+++ gtk+2.0-2.8.17/gtk/gtkfilechooserdefault.c	2006-05-02 18:27:01.000000000 +0200
@@ -1222,6 +1222,10 @@
 	    const GtkFilePath *path;
 
 	    path = data;
+	    /* Hack to avoid filechooser hanging on network I/O. See bug 319532. */
+	    if(! gtk_file_system_path_is_local (impl->file_system, path))
+	      path = "/";
+
 	    pixbuf = gtk_file_system_render_icon (impl->file_system, path, GTK_WIDGET (impl),
 						  impl->icon_size, NULL);
 	  }
@@ -1369,7 +1373,7 @@
       pixbuf = gtk_file_system_volume_render_icon (impl->file_system, volume, GTK_WIDGET (impl),
 						   impl->icon_size, NULL);
     }
-  else
+  else if(gtk_file_system_path_is_local (impl->file_system, path))
     {
       if (!check_is_folder (impl->file_system, path, error))
 	{
@@ -1397,6 +1401,32 @@
       pixbuf = gtk_file_system_render_icon (impl->file_system, path, GTK_WIDGET (impl),
 					    impl->icon_size, NULL);
     }
+  else
+    {
+      /* HACK: If this is not a local file, just display a stock icon to avoid
+       * the file chooser hanging on network I/O. See bug 319532.
+       */
+      if (label)
+        {
+	  label_copy = g_strdup (label);
+	}
+      else
+	{
+	  label_copy = g_strrstr ((char *)path, "/");
+	  if(label_copy)
+	    {
+	      label_copy = g_strdup(label_copy + 1);
+	    }
+	  else
+	    {
+	      profile_end ("end - is not folder", NULL);
+	      return FALSE;
+	    }
+        }
+
+      pixbuf = gtk_file_system_render_icon (impl->file_system, "/", GTK_WIDGET (impl),
+					    impl->icon_size, NULL);
+    }
 
   if (pos == -1)
     gtk_list_store_append (impl->shortcuts_model, &iter);
