diff --git a/eel/eel-background.c b/eel/eel-background.c
index 5e1efa1..dc83013 100644
--- a/eel/eel-background.c
+++ b/eel/eel-background.c
@@ -594,7 +594,7 @@ eel_background_set_image_uri_helper (EelBackground *background,
 	gnome_bg_set_filename (background->details->bg, filename);
 
 	if (emit_signal) {
-		g_signal_emit (GTK_OBJECT (background), signals[SETTINGS_CHANGED], 0, GDK_ACTION_COPY);
+		g_signal_emit (G_OBJECT (background), signals[SETTINGS_CHANGED], 0, GDK_ACTION_COPY);
 	}
 
 	set_image_properties (background);
@@ -669,7 +669,7 @@ eel_background_reset (EelBackground *background)
 {
 	g_return_if_fail (EEL_IS_BACKGROUND (background));
 
-	g_signal_emit (GTK_OBJECT (background), signals[RESET], 0);
+	g_signal_emit (G_OBJECT (background), signals[RESET], 0);
 }
 
 static void
diff --git a/eel/eel-canvas-rect-ellipse.c b/eel/eel-canvas-rect-ellipse.c
index 688e289..307f6d9 100644
--- a/eel/eel-canvas-rect-ellipse.c
+++ b/eel/eel-canvas-rect-ellipse.c
@@ -67,7 +67,7 @@ enum {
 
 static void eel_canvas_re_class_init (EelCanvasREClass *klass);
 static void eel_canvas_re_init       (EelCanvasRE      *re);
-static void eel_canvas_re_destroy    (GtkObject          *object);
+static void eel_canvas_re_destroy    (EelCanvasItem          *object);
 static void eel_canvas_re_set_property (GObject              *object,
 					  guint                 param_id,
 					  const GValue         *value,
@@ -129,11 +129,9 @@ static void
 eel_canvas_re_class_init (EelCanvasREClass *klass)
 {
 	GObjectClass *gobject_class;
-	GtkObjectClass *object_class;
 	EelCanvasItemClass *item_class;
 
 	gobject_class = (GObjectClass *) klass;
-	object_class = (GtkObjectClass *) klass;
 	item_class = (EelCanvasItemClass *) klass;
 
 	re_parent_class = g_type_class_peek_parent (klass);
@@ -219,8 +217,7 @@ eel_canvas_re_class_init (EelCanvasREClass *klass)
 				      0.0, G_MAXDOUBLE, 0.0,
 				      G_PARAM_READWRITE));
 
-	object_class->destroy = eel_canvas_re_destroy;
-
+	item_class->destroy = eel_canvas_re_destroy;
 	item_class->realize = eel_canvas_re_realize;
 	item_class->unrealize = eel_canvas_re_unrealize;
 	item_class->translate = eel_canvas_re_translate;
@@ -238,7 +235,7 @@ eel_canvas_re_init (EelCanvasRE *re)
 }
 
 static void
-eel_canvas_re_destroy (GtkObject *object)
+eel_canvas_re_destroy (EelCanvasItem *object)
 {
 	EelCanvasRE *re;
 
@@ -249,8 +246,8 @@ eel_canvas_re_destroy (GtkObject *object)
 
 	/* remember, destroy can be run multiple times! */
 
-	if (GTK_OBJECT_CLASS (re_parent_class)->destroy)
-		(* GTK_OBJECT_CLASS (re_parent_class)->destroy) (object);
+	if (EEL_CANVAS_ITEM_CLASS (re_parent_class)->destroy)
+		(* EEL_CANVAS_ITEM_CLASS (re_parent_class)->destroy) (object);
 }
 
 static void get_bounds (EelCanvasRE *re, double *px1, double *py1, double *px2, double *py2)
diff --git a/eel/eel-canvas.c b/eel/eel-canvas.c
index 87def99..bf99ab1 100644
--- a/eel/eel-canvas.c
+++ b/eel/eel-canvas.c
@@ -93,6 +93,7 @@ enum {
 };
 
 enum {
+        ITEM_DESTROY,
 	ITEM_EVENT,
 	ITEM_LAST_SIGNAL
 };
@@ -103,7 +104,7 @@ static int  emit_event                       (EelCanvas *canvas, GdkEvent *event
 
 static guint item_signals[ITEM_LAST_SIGNAL];
 
-static GtkObjectClass *item_parent_class;
+static GObjectClass *item_parent_class;
 
 static gpointer accessible_item_parent_class;
 static gpointer accessible_parent_class;
@@ -135,7 +136,7 @@ eel_canvas_item_get_type (void)
 			(GInstanceInitFunc) eel_canvas_item_init
 		};
 
-		canvas_item_type = g_type_register_static (gtk_object_get_type (),
+		canvas_item_type = g_type_register_static (G_TYPE_INITIALLY_UNOWNED,
 							   "EelCanvasItem",
 							   &canvas_item_info,
 							   0);
@@ -336,9 +337,22 @@ eel_canvas_item_dispose (GObject *object)
 		item->canvas = NULL;
 	}
 
+        g_object_set_data (object, "in-destruction", GINT_TO_POINTER(1));
+
+        g_signal_emit (object, object_signals[DESTROY], 0);
+
+        g_object_set_data (object, "in-destruction", NULL);
+
 	G_OBJECT_CLASS (item_parent_class)->dispose (object);
 }
 
+void
+eel_canvas_item_destroy (EelCanvasItem *item)
+{
+        if (!g_object_get_data (item, "in-destruction"))
+                g_object_run_dispose (G_OBJECT (item));
+}
+
 
 /* Realize handler for canvas items */
 static void
@@ -1146,7 +1160,7 @@ static void eel_canvas_group_get_property(GObject               *object,
 					    GValue                *value,
 					    GParamSpec            *pspec);
 
-static void eel_canvas_group_destroy     (GtkObject             *object);
+static void eel_canvas_group_destroy     (EelCanvasItem      *object);
 
 static void   eel_canvas_group_update      (EelCanvasItem *item,
 					      double           i2w_dx,
@@ -1210,11 +1224,9 @@ static void
 eel_canvas_group_class_init (EelCanvasGroupClass *klass)
 {
 	GObjectClass *gobject_class;
-	GtkObjectClass *object_class;
 	EelCanvasItemClass *item_class;
 
 	gobject_class = (GObjectClass *) klass;
-	object_class = (GtkObjectClass *) klass;
 	item_class = (EelCanvasItemClass *) klass;
 
 	group_parent_class = g_type_class_peek_parent (klass);
@@ -1237,7 +1249,7 @@ eel_canvas_group_class_init (EelCanvasGroupClass *klass)
 				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
 				      G_PARAM_READWRITE));
 
-	object_class->destroy = eel_canvas_group_destroy;
+	item_class->destroy = eel_canvas_group_destroy;
 
 	item_class->update = eel_canvas_group_update;
 	item_class->unrealize = eel_canvas_group_unrealize;
@@ -1332,7 +1344,7 @@ eel_canvas_group_get_property (GObject *gobject, guint param_id,
 
 /* Destroy handler for canvas groups */
 static void
-eel_canvas_group_destroy (GtkObject *object)
+eel_canvas_group_destroy (EelCanvasItem *object)
 {
 	EelCanvasGroup *group;
 	EelCanvasItem *child;
@@ -1347,11 +1359,11 @@ eel_canvas_group_destroy (GtkObject *object)
 		child = list->data;
 		list = list->next;
 
-		gtk_object_destroy (GTK_OBJECT (child));
+		eel_canvas_item_destroy (child);
 	}
 
-	if (GTK_OBJECT_CLASS (group_parent_class)->destroy)
-		(* GTK_OBJECT_CLASS (group_parent_class)->destroy) (object);
+	if (EEL_CANVAS_ITEM_CLASS (group_parent_class)->destroy)
+		(* EEL_CANVAS_ITEM_CLASS (group_parent_class)->destroy) (object);
 }
 
 /* Update handler for canvas groups */
@@ -1641,12 +1653,7 @@ eel_canvas_group_bounds (EelCanvasItem *item, double *x1, double *y1, double *x2
 static void
 group_add (EelCanvasGroup *group, EelCanvasItem *item)
 {
-#if GLIB_CHECK_VERSION(2,10,0) && GTK_CHECK_VERSION(2,8,14)
 	g_object_ref_sink (item);
-#else
-	g_object_ref (item);
-	gtk_object_sink (GTK_OBJECT (item));
-#endif
 
 	if (!group->item_list) {
 		group->item_list = g_list_append (group->item_list, item);
@@ -1709,7 +1716,7 @@ enum {
 
 static void eel_canvas_class_init          (EelCanvasClass *klass);
 static void eel_canvas_init                (EelCanvas      *canvas);
-static void eel_canvas_destroy             (GtkObject        *object);
+static void eel_canvas_destroy             (GtkWidget        *object);
 static void eel_canvas_map                 (GtkWidget        *widget);
 static void eel_canvas_unmap               (GtkWidget        *widget);
 static void eel_canvas_realize             (GtkWidget        *widget);
@@ -2011,11 +2018,9 @@ static void
 eel_canvas_class_init (EelCanvasClass *klass)
 {
 	GObjectClass   *gobject_class;
-	GtkObjectClass *object_class;
 	GtkWidgetClass *widget_class;
 
 	gobject_class = (GObjectClass *)klass;
-	object_class  = (GtkObjectClass *) klass;
 	widget_class  = (GtkWidgetClass *) klass;
 
 	canvas_parent_class = g_type_class_peek_parent (klass);
@@ -2023,8 +2028,7 @@ eel_canvas_class_init (EelCanvasClass *klass)
 	gobject_class->set_property = eel_canvas_set_property;
 	gobject_class->get_property = eel_canvas_get_property;
 
-	object_class->destroy = eel_canvas_destroy;
-
+	widget_class->destroy = eel_canvas_destroy;
 	widget_class->map = eel_canvas_map;
 	widget_class->unmap = eel_canvas_unmap;
 	widget_class->realize = eel_canvas_realize;
@@ -2063,7 +2067,7 @@ eel_canvas_class_init (EelCanvasClass *klass)
  * never ever do this, so we panic if this happens.
  */
 static void
-panic_root_destroyed (GtkObject *object, gpointer data)
+panic_root_destroyed (EelCanvasItem *object, gpointer data)
 {
 	g_error ("Eeeek, root item %p of canvas %p was destroyed!", object, data);
 }
@@ -2098,12 +2102,7 @@ eel_canvas_init (EelCanvas *canvas)
 	canvas->root = EEL_CANVAS_ITEM (g_object_new (eel_canvas_group_get_type (), NULL));
 	canvas->root->canvas = canvas;
 
-#if GLIB_CHECK_VERSION(2,10,0) && GTK_CHECK_VERSION(2,8,14)
 	g_object_ref_sink (canvas->root);
-#else
-	g_object_ref (canvas->root);
-	gtk_object_sink (GTK_OBJECT (canvas->root));
-#endif
 
 	canvas->root_destroy_id = g_signal_connect (G_OBJECT (canvas->root),
 		"destroy", G_CALLBACK (panic_root_destroyed), canvas);
@@ -2147,7 +2146,7 @@ shutdown_transients (EelCanvas *canvas)
 
 /* Destroy handler for EelCanvas */
 static void
-eel_canvas_destroy (GtkObject *object)
+eel_canvas_destroy (GtkWidget *object)
 {
 	EelCanvas *canvas;
 
@@ -2164,14 +2163,14 @@ eel_canvas_destroy (GtkObject *object)
 	if (canvas->root) {
 		EelCanvasItem *root = canvas->root;
 		canvas->root = NULL;
-		gtk_object_destroy (GTK_OBJECT (root));
+		eel_canvas_item_destroy (root);
 		g_object_unref (root);
 	}
 
 	shutdown_transients (canvas);
 
-	if (GTK_OBJECT_CLASS (canvas_parent_class)->destroy)
-		(* GTK_OBJECT_CLASS (canvas_parent_class)->destroy) (object);
+	if (GTK_WIDGET_CLASS (canvas_parent_class)->destroy)
+		(* GTK_WIDGET_CLASS (canvas_parent_class)->destroy) (object);
 }
 
 /**
@@ -2544,14 +2543,14 @@ emit_event (EelCanvas *canvas, GdkEvent *event)
 	finished = FALSE;
 
 	while (item && !finished) {
-		g_object_ref (GTK_OBJECT (item));
+		g_object_ref (G_OBJECT (item));
 
 		g_signal_emit (
 		       G_OBJECT (item), item_signals[ITEM_EVENT], 0,
 			&ev, &finished);
 		
 		parent = item->parent;
-		g_object_unref (GTK_OBJECT (item));
+		g_object_unref (G_OBJECT (item));
 
 		item = parent;
 	}
@@ -3927,6 +3926,7 @@ eel_canvas_item_accessible_factory_get_type (void)
 	return type;
 }
 
+
 /* Class initialization function for EelCanvasItemClass */
 static void
 eel_canvas_item_class_init (EelCanvasItemClass *klass)
@@ -3951,6 +3951,7 @@ eel_canvas_item_class_init (EelCanvasItemClass *klass)
 				      TRUE,
 				      G_PARAM_READWRITE));
 
+
 	item_signals[ITEM_EVENT] =
 		g_signal_new ("event",
 			      G_TYPE_FROM_CLASS (klass),
@@ -3961,6 +3962,15 @@ eel_canvas_item_class_init (EelCanvasItemClass *klass)
 			      G_TYPE_BOOLEAN, 1,
 			      GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
 
+        item_signals[DESTROY] =
+                g_signal_new (I_("destroy"),
+‣‧‧‧‧‧‧‧‣‧‧‧‧‧‧‧              G_TYPE_FROM_CLASS (klass),
+‣‧‧‧‧‧‧‧‣‧‧‧‧‧‧‧              G_SIGNAL_RUN_CLEANUP | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
+‣‧‧‧‧‧‧‧‣‧‧‧‧‧‧‧              G_STRUCT_OFFSET (EelCanvasItemClass, destroy),
+‣‧‧‧‧‧‧‧‣‧‧‧‧‧‧‧              NULL, NULL,
+‣‧‧‧‧‧‧‧‣‧‧‧‧‧‧‧              g_cclosure_marshal_VOID__VOID,
+‣‧‧‧‧‧‧‧‣‧‧‧‧‧‧‧              G_TYPE_NONE, 0);
+
 	klass->realize = eel_canvas_item_realize;
 	klass->unrealize = eel_canvas_item_unrealize;
 	klass->map = eel_canvas_item_map;
diff --git a/eel/eel-canvas.h b/eel/eel-canvas.h
index e66e440..4af4d17 100644
--- a/eel/eel-canvas.h
+++ b/eel/eel-canvas.h
@@ -110,7 +110,7 @@ enum {
 
 
 struct _EelCanvasItem {
-	GtkObject object;
+	GInitiallyUnowned object;
 
 	/* Parent canvas for this item */
 	EelCanvas *canvas;
@@ -126,8 +126,9 @@ struct _EelCanvasItem {
 };
 
 struct _EelCanvasItemClass {
-	GtkObjectClass parent_class;
+	GInitiallyUnownedClass parent_class;
 
+        void (* destroy) (EelCanvasItem *item);
 	/* Tell the item to update itself.  The flags are from the update flags
 	 * defined above.  The item should update its internal state from its
 	 * queued state, and recompute and request its repaint area. The
@@ -189,6 +190,8 @@ GType eel_canvas_item_get_type (void) G_GNUC_CONST;
 EelCanvasItem *eel_canvas_item_new (EelCanvasGroup *parent, GType type,
 				    const gchar *first_arg_name, ...);
 
+void eel_canvas_item_destroy (EelCanvasItem *item);
+
 /* Constructors for use in derived classes and language wrappers */
 void eel_canvas_item_construct (EelCanvasItem *item, EelCanvasGroup *parent,
 				const gchar *first_arg_name, va_list args);
diff --git a/eel/eel-editable-label.c b/eel/eel-editable-label.c
index f651bd5..2e8c4a3 100644
--- a/eel/eel-editable-label.c
+++ b/eel/eel-editable-label.c
@@ -204,7 +204,6 @@ static void
 eel_editable_label_class_init (EelEditableLabelClass *class)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (class);
-  GtkObjectClass *object_class = GTK_OBJECT_CLASS (class);
   GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
   GtkBindingSet *binding_set;
 
@@ -241,7 +240,7 @@ eel_editable_label_class_init (EelEditableLabelClass *class)
   
   signals[MOVE_CURSOR] = 
     g_signal_new ("move_cursor",
-		  G_TYPE_FROM_CLASS (object_class),
+		  G_TYPE_FROM_CLASS (class),
 		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
 		  G_STRUCT_OFFSET (EelEditableLabelClass, move_cursor),
 		  NULL, NULL,
@@ -250,7 +249,7 @@ eel_editable_label_class_init (EelEditableLabelClass *class)
   
   signals[COPY_CLIPBOARD] =
     g_signal_new ("copy_clipboard",
-		  G_TYPE_FROM_CLASS (object_class),
+		  G_TYPE_FROM_CLASS (class),
 		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
 		  G_STRUCT_OFFSET  (EelEditableLabelClass, copy_clipboard),
 		  NULL, NULL, 
@@ -259,7 +258,7 @@ eel_editable_label_class_init (EelEditableLabelClass *class)
   
   signals[POPULATE_POPUP] =
     g_signal_new ("populate_popup",
-		  G_TYPE_FROM_CLASS (object_class),
+		  G_TYPE_FROM_CLASS (class),
 		  G_SIGNAL_RUN_LAST,
 		  G_STRUCT_OFFSET (EelEditableLabelClass, populate_popup),
 		  NULL, NULL, 
@@ -268,7 +267,7 @@ eel_editable_label_class_init (EelEditableLabelClass *class)
 
   signals[DELETE_FROM_CURSOR] = 
     g_signal_new ("delete_from_cursor",
-		  G_TYPE_FROM_CLASS (object_class),
+		  G_TYPE_FROM_CLASS (class),
 		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
 		  G_STRUCT_OFFSET (EelEditableLabelClass, delete_from_cursor),
 		  NULL, NULL, 
@@ -277,7 +276,7 @@ eel_editable_label_class_init (EelEditableLabelClass *class)
   
   signals[CUT_CLIPBOARD] =
     g_signal_new ("cut_clipboard",
-		  G_TYPE_FROM_CLASS (object_class),
+		  G_TYPE_FROM_CLASS (class),
 		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
 		  G_STRUCT_OFFSET (EelEditableLabelClass, cut_clipboard),
 		  NULL, NULL, 
@@ -286,7 +285,7 @@ eel_editable_label_class_init (EelEditableLabelClass *class)
 
   signals[PASTE_CLIPBOARD] =
     g_signal_new ("paste_clipboard",
-		  G_TYPE_FROM_CLASS (object_class),
+		  G_TYPE_FROM_CLASS (class),
 		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
 		  G_STRUCT_OFFSET (EelEditableLabelClass, paste_clipboard),
 		  NULL, NULL, 
@@ -295,7 +294,7 @@ eel_editable_label_class_init (EelEditableLabelClass *class)
 
   signals[TOGGLE_OVERWRITE] =
     g_signal_new ("toggle_overwrite",
-		  G_TYPE_FROM_CLASS (object_class),
+		  G_TYPE_FROM_CLASS (class),
 		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
 		  G_STRUCT_OFFSET (EelEditableLabelClass, toggle_overwrite),
 		  NULL, NULL, 
@@ -303,7 +302,7 @@ eel_editable_label_class_init (EelEditableLabelClass *class)
 		  G_TYPE_NONE, 0);
 
   
-  g_object_class_install_property (G_OBJECT_CLASS(object_class),
+  g_object_class_install_property (gobject_class,
                                    PROP_TEXT,
                                    g_param_spec_string ("text",
                                                         _("Text"),
@@ -2960,7 +2959,7 @@ activate_cb (GtkWidget *menuitem,
 	     EelEditableLabel  *label)
 {
   const gchar *signal = g_object_get_data (G_OBJECT (menuitem), "gtk-signal");
-  g_signal_emit_by_name (GTK_OBJECT (label), signal);
+  g_signal_emit_by_name (label, signal);
 }
 
 static void
@@ -3094,7 +3093,7 @@ popup_targets_received (GtkClipboard     *clipboard,
       gtk_im_multicontext_append_menuitems (GTK_IM_MULTICONTEXT (label->im_context),
 					    GTK_MENU_SHELL (submenu));
 
-      g_signal_emit (GTK_OBJECT (label),
+      g_signal_emit (label,
 		     signals[POPULATE_POPUP], 0,
 		     label->popup_menu);
 
diff --git a/eel/eel-stock-dialogs.c b/eel/eel-stock-dialogs.c
index 0ef8d09..e7ae48a 100644
--- a/eel/eel-stock-dialogs.c
+++ b/eel/eel-stock-dialogs.c
@@ -59,7 +59,7 @@ typedef struct {
 
 static GHashTable *timed_wait_hash_table;
 
-static void timed_wait_dialog_destroy_callback (GtkObject *object, gpointer callback_data);
+static void timed_wait_dialog_destroy_callback (GtkWidget *object, gpointer callback_data);
 
 static guint
 timed_wait_hash (gconstpointer value)
@@ -85,7 +85,7 @@ timed_wait_hash_equal (gconstpointer value1, gconstpointer value2)
 }
 
 static void
-timed_wait_delayed_close_destroy_dialog_callback (GtkObject *object, gpointer callback_data)
+timed_wait_delayed_close_destroy_dialog_callback (GtkWidget *object, gpointer callback_data)
 {
 	g_source_remove (GPOINTER_TO_UINT (callback_data));
 }
@@ -102,7 +102,7 @@ timed_wait_delayed_close_timeout_callback (gpointer callback_data)
 					      G_CALLBACK (timed_wait_delayed_close_destroy_dialog_callback),
 					      GUINT_TO_POINTER (handler_id));
 	
-	gtk_object_destroy (GTK_OBJECT (callback_data));
+	gtk_widget_destroy (GTK_WIDGET (callback_data));
 
 	return FALSE;
 }
@@ -146,7 +146,7 @@ timed_wait_free (TimedWait *wait)
 					    G_CALLBACK (timed_wait_delayed_close_destroy_dialog_callback),
 					    GUINT_TO_POINTER (delayed_close_handler_id));
 		} else {
-			gtk_object_destroy (GTK_OBJECT (wait->dialog));
+			gtk_widget_destroy (GTK_WIDGET (wait->dialog));
 		}
 	}
 
@@ -155,7 +155,7 @@ timed_wait_free (TimedWait *wait)
 }
 
 static void
-timed_wait_dialog_destroy_callback (GtkObject *object, gpointer callback_data)
+timed_wait_dialog_destroy_callback (GtkWidget *object, gpointer callback_data)
 {
 	TimedWait *wait;
 
@@ -409,7 +409,7 @@ show_message_dialog (const char *primary_text,
 	gtk_widget_show (GTK_WIDGET (dialog));
 
 	g_signal_connect (dialog, "response",
-			  G_CALLBACK (gtk_object_destroy), NULL);
+			  G_CALLBACK (gtk_widget_destroy), NULL);
 
 	return dialog;
 }
diff --git a/libnautilus-private/nautilus-autorun.c b/libnautilus-private/nautilus-autorun.c
index bd82854..c0b99a6 100644
--- a/libnautilus-private/nautilus-autorun.c
+++ b/libnautilus-private/nautilus-autorun.c
@@ -259,7 +259,7 @@ dialog_response_cb (GtkDialog *dialog,
 }
 
 static void
-dialog_destroy_cb (GtkObject *object,
+dialog_destroy_cb (GtkWidget *object,
                    NautilusAutorunComboBoxData *data)
 {
 	handle_dialog_closure (data);
diff --git a/libnautilus-private/nautilus-clipboard.c b/libnautilus-private/nautilus-clipboard.c
index 947dbba..e19b2ce 100644
--- a/libnautilus-private/nautilus-clipboard.c
+++ b/libnautilus-private/nautilus-clipboard.c
@@ -411,7 +411,7 @@ owner_change_callback (GtkClipboard        *clipboard,
 }
 
 static void
-target_destroy_callback (GtkObject *object,
+target_destroy_callback (GtkWidget *object,
 			 gpointer callback_data)
 {
 	TargetCallbackData *target_data;
diff --git a/libnautilus-private/nautilus-entry.c b/libnautilus-private/nautilus-entry.c
index 0c23139..bf1f56c 100644
--- a/libnautilus-private/nautilus-entry.c
+++ b/libnautilus-private/nautilus-entry.c
@@ -378,13 +378,11 @@ static void
 nautilus_entry_class_init (NautilusEntryClass *class)
 {
 	GtkWidgetClass *widget_class;
-	GtkObjectClass *object_class;
 	GObjectClass *gobject_class;
 
 	widget_class = GTK_WIDGET_CLASS (class);
 	gobject_class = G_OBJECT_CLASS (class);
-	object_class = GTK_OBJECT_CLASS (class);
-		
+	
 	widget_class->button_press_event = nautilus_entry_button_press;
 	widget_class->button_release_event = nautilus_entry_button_release;
 	widget_class->key_press_event = nautilus_entry_key_press;
@@ -396,7 +394,7 @@ nautilus_entry_class_init (NautilusEntryClass *class)
 	/* Set up signals */
 	signals[USER_CHANGED] = g_signal_new
 		("user_changed",
-		 G_TYPE_FROM_CLASS (object_class),
+		 G_TYPE_FROM_CLASS (class),
 		 G_SIGNAL_RUN_LAST,
 		 G_STRUCT_OFFSET (NautilusEntryClass,
 				    user_changed),
@@ -405,7 +403,7 @@ nautilus_entry_class_init (NautilusEntryClass *class)
 		 G_TYPE_NONE, 0);
 	signals[SELECTION_CHANGED] = g_signal_new
 		("selection_changed",
-		 G_TYPE_FROM_CLASS (object_class),
+		 G_TYPE_FROM_CLASS (class),
 		 G_SIGNAL_RUN_LAST,
 		 G_STRUCT_OFFSET (NautilusEntryClass,
 				    selection_changed),
diff --git a/libnautilus-private/nautilus-icon-container.c b/libnautilus-private/nautilus-icon-container.c
index a83a9a1..b90e9c0 100644
--- a/libnautilus-private/nautilus-icon-container.c
+++ b/libnautilus-private/nautilus-icon-container.c
@@ -294,7 +294,7 @@ static void
 icon_free (NautilusIcon *icon)
 {
 	/* Destroy this canvas item; the parent will unref it. */
-	gtk_object_destroy (GTK_OBJECT (icon->item));
+	gtk_widget_destroy (GTK_WIDGET (icon->item));
 	g_free (icon);
 }
 
@@ -2745,7 +2745,7 @@ stop_rubberbanding (NautilusIconContainer *container,
 
 	/* Destroy this canvas item; the parent will unref it. */
 	eel_canvas_item_ungrab (band_info->selection_rectangle, time);
-	gtk_object_destroy (GTK_OBJECT (band_info->selection_rectangle));
+	gtk_widget_destroy (GTK_WIDGET (band_info->selection_rectangle));
 	band_info->selection_rectangle = NULL;
 
 	/* if only one item has been selected, use it as range
@@ -3985,10 +3985,8 @@ select_previous_or_next_icon (NautilusIconContainer *container,
 }
 #endif
 
-/* GtkObject methods.  */
-
 static void
-destroy (GtkObject *object)
+destroy (GtkWidget *object)
 {
 	NautilusIconContainer *container;
 
@@ -4038,7 +4036,7 @@ destroy (GtkObject *object)
 	}
 
 
-	GTK_OBJECT_CLASS (nautilus_icon_container_parent_class)->destroy (object);
+	GTK_WIDGET_CLASS (nautilus_icon_container_parent_class)->destroy (object);
 }
 
 static void
@@ -5665,7 +5663,6 @@ nautilus_icon_container_class_init (NautilusIconContainerClass *class)
 
 	G_OBJECT_CLASS (class)->constructor = nautilus_icon_container_constructor;
 	G_OBJECT_CLASS (class)->finalize = finalize;
-	GTK_OBJECT_CLASS (class)->destroy = destroy;
 
 	/* Signals.  */
 
@@ -6016,6 +6013,7 @@ nautilus_icon_container_class_init (NautilusIconContainerClass *class)
 	/* GtkWidget class.  */
 
 	widget_class = GTK_WIDGET_CLASS (class);
+	widget_class->destroy = destroy;
 	widget_class->size_request = size_request;
 	widget_class->size_allocate = size_allocate;
 	widget_class->realize = realize;
diff --git a/libnautilus-private/nautilus-icon-dnd.c b/libnautilus-private/nautilus-icon-dnd.c
index 6b37f31..9a89f2a 100644
--- a/libnautilus-private/nautilus-icon-dnd.c
+++ b/libnautilus-private/nautilus-icon-dnd.c
@@ -359,7 +359,7 @@ nautilus_icon_container_dropped_icon_feedback (GtkWidget *widget,
 	if (dnd_info->shadow != NULL) {
 		/* FIXME bugzilla.gnome.org 42484: 
 		 * Is a destroy really sufficient here? Who does the unref? */
-		gtk_object_destroy (GTK_OBJECT (dnd_info->shadow));
+		gtk_widget_destroy (GTK_WIDGET (dnd_info->shadow));
 	}
 
 	/* Build the selection list and the shadow. */
@@ -862,7 +862,7 @@ confirm_switch_to_manual_layout (NautilusIconContainer *container)
 					 GTK_WINDOW (gtk_widget_get_toplevel(GTK_WIDGET(container))));
 
 	response = gtk_dialog_run (dialog);
-	gtk_object_destroy (GTK_OBJECT (dialog));
+	gtk_widget_destroy (GTK_WIDGET (dialog));
 
 	return response == GTK_RESPONSE_YES;
 #else
@@ -1333,7 +1333,7 @@ nautilus_icon_container_free_drag_data (NautilusIconContainer *container)
 	dnd_info->drag_info.got_drop_data_type = FALSE;
 
 	if (dnd_info->shadow != NULL) {
-		gtk_object_destroy (GTK_OBJECT (dnd_info->shadow));
+		gtk_widget_destroy (GTK_WIDGET (dnd_info->shadow));
 		dnd_info->shadow = NULL;
 	}
 
diff --git a/libnautilus-private/nautilus-mime-actions.c b/libnautilus-private/nautilus-mime-actions.c
index 858dd49..31aa8f0 100644
--- a/libnautilus-private/nautilus-mime-actions.c
+++ b/libnautilus-private/nautilus-mime-actions.c
@@ -729,7 +729,7 @@ report_broken_symbolic_link (GtkWindow *parent_window, NautilusFile *file)
 	 */
 
 	response = gtk_dialog_run (dialog);
-	gtk_object_destroy (GTK_OBJECT (dialog));
+	gtk_widget_destroy (GTK_WIDGET (dialog));
 
 	if (response == GTK_RESPONSE_YES) {
 		file_as_list.data = file;
@@ -794,7 +794,7 @@ get_executable_text_file_action (GtkWindow *parent_window, NautilusFile *file)
 	g_free (detail);
 
 	response = gtk_dialog_run (dialog);
-	gtk_object_destroy (GTK_OBJECT (dialog));
+	gtk_widget_destroy (GTK_WIDGET (dialog));
 	
 	switch (response) {
 	case RESPONSE_RUN:
@@ -1124,7 +1124,7 @@ confirm_multiple_windows (GtkWindow *parent_window,
 	g_free (detail);
 
 	response = gtk_dialog_run (dialog);
-	gtk_object_destroy (GTK_OBJECT (dialog));
+	gtk_widget_destroy (GTK_WIDGET (dialog));
 
 	return response == GTK_RESPONSE_YES;
 }
diff --git a/libnautilus-private/nautilus-mime-application-chooser.c b/libnautilus-private/nautilus-mime-application-chooser.c
index 8ead2d7..08e6109 100644
--- a/libnautilus-private/nautilus-mime-application-chooser.c
+++ b/libnautilus-private/nautilus-mime-application-chooser.c
@@ -105,22 +105,12 @@ nautilus_mime_application_chooser_finalize (GObject *object)
 }
 
 static void
-nautilus_mime_application_chooser_destroy (GtkObject *object)
-{
-	GTK_OBJECT_CLASS (nautilus_mime_application_chooser_parent_class)->destroy (object);
-}
-
-static void
 nautilus_mime_application_chooser_class_init (NautilusMimeApplicationChooserClass *class)
 {
 	GObjectClass *gobject_class;
-	GtkObjectClass *object_class;
 
 	gobject_class = G_OBJECT_CLASS (class);
 	gobject_class->finalize = nautilus_mime_application_chooser_finalize;
-	
-	object_class = GTK_OBJECT_CLASS (class);
-	object_class->destroy = nautilus_mime_application_chooser_destroy;
 }
 
 static void
diff --git a/libnautilus-private/nautilus-open-with-dialog.c b/libnautilus-private/nautilus-open-with-dialog.c
index a96e5ca..0d7bb29 100644
--- a/libnautilus-private/nautilus-open-with-dialog.c
+++ b/libnautilus-private/nautilus-open-with-dialog.c
@@ -113,12 +113,6 @@ nautilus_open_with_dialog_finalize (GObject *object)
 	G_OBJECT_CLASS (nautilus_open_with_dialog_parent_class)->finalize (object);
 }
 
-static void
-nautilus_open_with_dialog_destroy (GtkObject *object)
-{
-	GTK_OBJECT_CLASS (nautilus_open_with_dialog_parent_class)->destroy (object);
-}
-
 /* An application is valid if:
  *
  * 1) The file exists
@@ -359,14 +353,10 @@ static void
 nautilus_open_with_dialog_class_init (NautilusOpenWithDialogClass *class)
 {
 	GObjectClass *gobject_class;
-	GtkObjectClass *object_class;
 
 	gobject_class = G_OBJECT_CLASS (class);
 	gobject_class->finalize = nautilus_open_with_dialog_finalize;
 
-	object_class = GTK_OBJECT_CLASS (class);
-	object_class->destroy = nautilus_open_with_dialog_destroy;
-
 	signals[APPLICATION_SELECTED] =
 		g_signal_new ("application_selected",
 			      G_TYPE_FROM_CLASS (object_class),
diff --git a/libnautilus-private/nautilus-program-choosing.c b/libnautilus-private/nautilus-program-choosing.c
index 98a833c..8d8f749 100644
--- a/libnautilus-private/nautilus-program-choosing.c
+++ b/libnautilus-private/nautilus-program-choosing.c
@@ -94,7 +94,7 @@ application_cannot_open_location (GAppInfo *application,
 							 GTK_STOCK_CANCEL,
 							 parent_window);
 		response = gtk_dialog_run (message_dialog);
-		gtk_object_destroy (GTK_OBJECT (message_dialog));
+		gtk_widget_destroy (GTK_WIDGET (message_dialog));
 		
 		if (response == GTK_RESPONSE_YES) {
 			launch_parameters = launch_parameters_new (file, parent_window);
diff --git a/libnautilus-private/nautilus-undo-signal-handlers.c b/libnautilus-private/nautilus-undo-signal-handlers.c
index b2c52c0..215266a 100644
--- a/libnautilus-private/nautilus-undo-signal-handlers.c
+++ b/libnautilus-private/nautilus-undo-signal-handlers.c
@@ -289,7 +289,7 @@ editable_key_press_event (GtkEditable *editable, GdkEventKey *event, gpointer us
 	/* Undo */
 	case 'z':
 		if ((event->state & GDK_CONTROL_MASK) != 0) {
-			nautilus_undo (GTK_OBJECT (editable));
+			nautilus_undo (G_OBJECT (editable));
 			return TRUE;
 		}
 		break;
diff --git a/src/file-manager/fm-desktop-icon-view.c b/src/file-manager/fm-desktop-icon-view.c
index 11181bb..a463729 100644
--- a/src/file-manager/fm-desktop-icon-view.c
+++ b/src/file-manager/fm-desktop-icon-view.c
@@ -257,7 +257,7 @@ desktop_icon_view_property_filter (GdkXEvent *gdk_xevent,
 }
 
 static void
-fm_desktop_icon_view_destroy (GtkObject *object)
+fm_desktop_icon_view_destroy (GtkWidget *object)
 {
 	FMDesktopIconView *icon_view;
 	GtkUIManager *ui_manager;
@@ -277,7 +277,7 @@ fm_desktop_icon_view_destroy (GtkObject *object)
 					&icon_view->details->desktop_action_group);
 	}
 
-	GTK_OBJECT_CLASS (parent_class)->destroy (object);
+	GTK_WIDGET_CLASS (parent_class)->destroy (object);
 }
 
 static void
@@ -312,7 +312,7 @@ fm_desktop_icon_view_class_init (FMDesktopIconViewClass *class)
 {
 	G_OBJECT_CLASS (class)->finalize = fm_desktop_icon_view_finalize;
 
-	GTK_OBJECT_CLASS (class)->destroy = fm_desktop_icon_view_destroy;
+	GTK_WIDGET_CLASS (class)->destroy = fm_desktop_icon_view_destroy;
 
 	FM_DIRECTORY_VIEW_CLASS (class)->merge_menus = real_merge_menus;
 	FM_DIRECTORY_VIEW_CLASS (class)->update_menus = real_update_menus;
@@ -470,7 +470,7 @@ do_desktop_rescan (gpointer data)
 }
 
 static void
-done_loading (GtkObject *DirectoryView, FMDesktopIconView *desktop_icon_view)
+done_loading (GtkWidget *DirectoryView, FMDesktopIconView *desktop_icon_view)
 {
 	struct stat buf;
 
diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c
index 93807e3..a0ab671 100644
--- a/src/file-manager/fm-directory-view.c
+++ b/src/file-manager/fm-directory-view.c
@@ -635,7 +635,7 @@ fm_directory_view_confirm_multiple (GtkWindow *parent_window,
 	g_free (detail);
 
 	response = gtk_dialog_run (dialog);
-	gtk_object_destroy (GTK_OBJECT (dialog));
+	gtk_widget_destroy (GTK_WIDGET (dialog));
 
 	return response == GTK_RESPONSE_YES;
 }
@@ -2014,7 +2014,7 @@ real_unmerge_menus (FMDirectoryView *view)
 }
 
 static void
-fm_directory_view_destroy (GtkObject *object)
+fm_directory_view_destroy (GtkWidget *object)
 {
 	FMDirectoryView *view;
 	GList *node, *next;
@@ -2075,7 +2075,7 @@ fm_directory_view_destroy (GtkObject *object)
 		view->details->directory_as_file = NULL;
 	}
 
-	EEL_CALL_PARENT (GTK_OBJECT_CLASS, destroy, (object));
+	EEL_CALL_PARENT (GTK_WIDGET_CLASS, destroy, (object));
 }
 
 static void
@@ -2653,7 +2653,7 @@ copy_move_done_callback (GHashTable *debuting_files, gpointer data)
 			 * operate on. The ADD_FILE signal is registered as G_SIGNAL_RUN_LAST, so we
 			 * must use connect_after.
 			 */
-			g_signal_connect_data (GTK_OBJECT (directory_view),
+			g_signal_connect_data (G_OBJECT (directory_view),
 					       "add_file",
 					       G_CALLBACK (debuting_files_add_file_callback),
 					       debuting_files_data,
@@ -10624,8 +10624,7 @@ fm_directory_view_class_init (FMDirectoryViewClass *klass)
 	G_OBJECT_CLASS (klass)->finalize = fm_directory_view_finalize;
 	G_OBJECT_CLASS (klass)->set_property = fm_directory_view_set_property;
 
-	GTK_OBJECT_CLASS (klass)->destroy = fm_directory_view_destroy;
-
+	widget_class->destroy = fm_directory_view_destroy;
 	widget_class->scroll_event = fm_directory_view_scroll_event;
 	widget_class->parent_set = fm_directory_view_parent_set;
 
diff --git a/src/file-manager/fm-icon-view.c b/src/file-manager/fm-icon-view.c
index 6e5cb3d..293f91d 100644
--- a/src/file-manager/fm-icon-view.c
+++ b/src/file-manager/fm-icon-view.c
@@ -198,7 +198,7 @@ G_DEFINE_TYPE_WITH_CODE (FMIconView, fm_icon_view, FM_TYPE_DIRECTORY_VIEW,
 						fm_icon_view_iface_init));
 
 static void
-fm_icon_view_destroy (GtkObject *object)
+fm_icon_view_destroy (GtkWidget *object)
 {
 	FMIconView *icon_view;
 
@@ -223,7 +223,7 @@ fm_icon_view_destroy (GtkObject *object)
 		icon_view->details->icons_not_positioned = NULL;
 	}
 
-	GTK_OBJECT_CLASS (fm_icon_view_parent_class)->destroy (object);
+	GTK_WIDGET_CLASS (fm_icon_view_parent_class)->destroy (object);
 }
 
 
@@ -2650,8 +2650,6 @@ fm_icon_view_sort_directories_first_changed (FMDirectoryView *directory_view)
 	}
 }
 
-/* GtkObject methods. */
-
 static gboolean
 icon_view_can_accept_item (NautilusIconContainer *container,
 			   NautilusFile *target_item,
@@ -2954,7 +2952,7 @@ fm_icon_view_class_init (FMIconViewClass *klass)
 	G_OBJECT_CLASS (klass)->set_property = fm_icon_view_set_property;
 	G_OBJECT_CLASS (klass)->finalize = fm_icon_view_finalize;
 
-	GTK_OBJECT_CLASS (klass)->destroy = fm_icon_view_destroy;
+	GTK_WIDGET_CLASS (klass)->destroy = fm_icon_view_destroy;
 	
 	GTK_WIDGET_CLASS (klass)->screen_changed = fm_icon_view_screen_changed;
 	GTK_WIDGET_CLASS (klass)->scroll_event = fm_icon_view_scroll_event;
diff --git a/src/file-manager/fm-properties-window.c b/src/file-manager/fm-properties-window.c
index 07a6936..1ec633d 100644
--- a/src/file-manager/fm-properties-window.c
+++ b/src/file-manager/fm-properties-window.c
@@ -5074,8 +5074,8 @@ is_directory_ready_callback (NautilusFile *file,
  * See comment elsewhere in this file about bug 2151.
  */
 #ifdef UNDO_ENABLED
-		nautilus_undo_share_undo_manager (GTK_OBJECT (new_window),
-						  GTK_OBJECT (callback_data));
+		nautilus_undo_share_undo_manager (GTK_WIDGET (new_window),
+						  GTK_WIDGET (callback_data));
 #endif	
 		gtk_window_present (GTK_WINDOW (new_window));
 	}
@@ -5193,7 +5193,7 @@ real_response (GtkDialog *dialog,
 }
 
 static void
-real_destroy (GtkObject *object)
+real_destroy (GtkWidget *object)
 {
 	FMPropertiesWindow *window;
 	GList *l;
@@ -5243,7 +5243,7 @@ real_destroy (GtkObject *object)
 		window->details->update_files_timeout_id = 0;
 	}
 
-	GTK_OBJECT_CLASS (parent_class)->destroy (object);
+	GTK_WIDGET_CLASS (parent_class)->destroy (object);
 }
 
 static void
@@ -5498,7 +5498,7 @@ fm_properties_window_class_init (FMPropertiesWindowClass *class)
 	GtkBindingSet *binding_set;
 
 	G_OBJECT_CLASS (class)->finalize = real_finalize;
-	GTK_OBJECT_CLASS (class)->destroy = real_destroy;
+	GTK_WIDGET_CLASS (class)->destroy = real_destroy;
 	GTK_DIALOG_CLASS (class)->response = real_response;
 
 	binding_set = gtk_binding_set_by_class (class);
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index 0eb8495..a3ae812 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -335,7 +335,7 @@ check_required_directories (NautilusApplication *application)
 
 		dialog = eel_show_error_dialog (error_string, detail_string, NULL);
 		/* We need the main event loop so the user has a chance to see the dialog. */
-		nautilus_main_event_loop_register (GTK_OBJECT (dialog));
+		nautilus_main_event_loop_register (GTK_WIDGET (dialog));
 
 		g_string_free (directories_as_string, TRUE);
 		g_free (error_string);
@@ -1295,7 +1295,7 @@ nautilus_application_close_all_spatial_windows (void)
 }
 
 static void
-nautilus_application_destroyed_window (GtkObject *object, NautilusApplication *application)
+nautilus_application_destroyed_window (GtkWidget *object, NautilusApplication *application)
 {
 	nautilus_application_window_list = g_list_remove (nautilus_application_window_list, object);
 }
diff --git a/src/nautilus-bookmarks-window.c b/src/nautilus-bookmarks-window.c
index 207da80..c8a731f 100644
--- a/src/nautilus-bookmarks-window.c
+++ b/src/nautilus-bookmarks-window.c
@@ -223,9 +223,9 @@ static void
 edit_bookmarks_dialog_reset_signals (gpointer data,
 				     GObject *obj)
 {
-	g_signal_handler_disconnect (GTK_OBJECT (jump_button),
+	g_signal_handler_disconnect (G_OBJECT (jump_button),
 				     jump_button_signal_id);
-	g_signal_handler_disconnect (GTK_OBJECT (bookmark_list_widget),
+	g_signal_handler_disconnect (G_OBJECT (bookmark_list_widget),
 				     row_activated_signal_id);
 	jump_button_signal_id =
 		g_signal_connect (jump_button, "clicked",
@@ -408,9 +408,9 @@ void
 edit_bookmarks_dialog_set_signals (GObject *undo_manager_source)
 {
 
-	g_signal_handler_disconnect (GTK_OBJECT (jump_button), 
+	g_signal_handler_disconnect (G_OBJECT (jump_button), 
 				     jump_button_signal_id);
-	g_signal_handler_disconnect (GTK_OBJECT (bookmark_list_widget),
+	g_signal_handler_disconnect (G_OBJECT (bookmark_list_widget),
 				     row_activated_signal_id);
 
 	jump_button_signal_id =
diff --git a/src/nautilus-location-bar.c b/src/nautilus-location-bar.c
index 6478018..34b65f9 100644
--- a/src/nautilus-location-bar.c
+++ b/src/nautilus-location-bar.c
@@ -343,7 +343,7 @@ finalize (GObject *object)
 }
 
 static void
-destroy (GtkObject *object)
+destroy (GtkWidget *object)
 {
 	NautilusLocationBar *bar;
 
@@ -358,21 +358,21 @@ destroy (GtkObject *object)
 	g_free (bar->details->last_location);
 	bar->details->last_location = NULL;
 	
-	EEL_CALL_PARENT (GTK_OBJECT_CLASS, destroy, (object));
+	EEL_CALL_PARENT (GTK_WIDGET_CLASS, destroy, (object));
 }
 
 static void
 nautilus_location_bar_class_init (NautilusLocationBarClass *class)
 {
 	GObjectClass *gobject_class;
-	GtkObjectClass *object_class;
+	GtkWidgetClass *widget_class;
 	NautilusNavigationBarClass *navigation_bar_class;
 
 	gobject_class = G_OBJECT_CLASS (class);
 	gobject_class->finalize = finalize;
 	
-	object_class = GTK_OBJECT_CLASS (class);
-	object_class->destroy = destroy;
+	widget_class = GTK_WIDGET_CLASS (class);
+	widget_class->destroy = destroy;
 	
 	navigation_bar_class = NAUTILUS_NAVIGATION_BAR_CLASS (class);
 
diff --git a/src/nautilus-location-dialog.c b/src/nautilus-location-dialog.c
index 9cd758d..25195b8 100644
--- a/src/nautilus-location-dialog.c
+++ b/src/nautilus-location-dialog.c
@@ -60,13 +60,13 @@ nautilus_location_dialog_finalize (GObject *object)
 }
 
 static void
-nautilus_location_dialog_destroy (GtkObject *object)
+nautilus_location_dialog_destroy (GtkWidget *object)
 {
 	NautilusLocationDialog *dialog;
 
 	dialog = NAUTILUS_LOCATION_DIALOG (object);
 	
-	EEL_CALL_PARENT (GTK_OBJECT_CLASS, destroy, (object));
+	EEL_CALL_PARENT (GTK_WIDGET_CLASS, destroy, (object));
 }
 
 static void
@@ -132,13 +132,13 @@ static void
 nautilus_location_dialog_class_init (NautilusLocationDialogClass *class)
 {
 	GObjectClass *gobject_class;
-	GtkObjectClass *object_class;
+	GtkWidgetClass *widget_class;
 
 	gobject_class = G_OBJECT_CLASS (class);
 	gobject_class->finalize = nautilus_location_dialog_finalize;
 	
-	object_class = GTK_OBJECT_CLASS (class);
-	object_class->destroy = nautilus_location_dialog_destroy;
+	widget_class = GTK_WIDGET_CLASS (class);
+	widget_class->destroy = nautilus_location_dialog_destroy;
 }
 
 static void
diff --git a/src/nautilus-location-entry.c b/src/nautilus-location-entry.c
index 827a890..a9fc641 100644
--- a/src/nautilus-location-entry.c
+++ b/src/nautilus-location-entry.c
@@ -261,7 +261,7 @@ finalize (GObject *object)
 }
 
 static void
-destroy (GtkObject *object)
+destroy (GtkWidget *object)
 {
 	NautilusLocationEntry *entry;
 
@@ -276,7 +276,7 @@ destroy (GtkObject *object)
 	g_free (entry->details->current_directory);
 	entry->details->current_directory = NULL;
 	
-	EEL_CALL_PARENT (GTK_OBJECT_CLASS, destroy, (object));
+	EEL_CALL_PARENT (GTK_WIDGET_CLASS, destroy, (object));
 }
 
 static void
@@ -354,17 +354,14 @@ nautilus_location_entry_class_init (NautilusLocationEntryClass *class)
 {
 	GtkWidgetClass *widget_class;
 	GObjectClass *gobject_class;
-	GtkObjectClass *object_class;
 	GtkEntryClass *entry_class;
 
 	widget_class = GTK_WIDGET_CLASS (class);
 	widget_class->focus_in_event = nautilus_location_entry_focus_in;
+	widget_class->destroy = destroy;
 
 	gobject_class = G_OBJECT_CLASS (class);
 	gobject_class->finalize = finalize;
-	
-	object_class = GTK_OBJECT_CLASS (class);
-	object_class->destroy = destroy;
 
 	entry_class = GTK_ENTRY_CLASS (class);
 	entry_class->activate = nautilus_location_entry_activate;
diff --git a/src/nautilus-main.c b/src/nautilus-main.c
index 3151653..3212918 100644
--- a/src/nautilus-main.c
+++ b/src/nautilus-main.c
@@ -106,7 +106,7 @@ eel_gtk_main_quit_all (void)
 }
 
 static void
-event_loop_unregister (GtkObject *object)
+event_loop_unregister (GtkWidget *object)
 {
 	event_loop_registrants = g_slist_remove (event_loop_registrants, object);
 	if (!is_event_loop_needed ()) {
@@ -115,14 +115,14 @@ event_loop_unregister (GtkObject *object)
 }
 
 void
-nautilus_main_event_loop_register (GtkObject *object)
+nautilus_main_event_loop_register (GtkWidget *object)
 {
 	g_signal_connect (object, "destroy", G_CALLBACK (event_loop_unregister), NULL);
 	event_loop_registrants = g_slist_prepend (event_loop_registrants, object);
 }
 
 gboolean
-nautilus_main_is_event_loop_mainstay (GtkObject *object)
+nautilus_main_is_event_loop_mainstay (GtkWidget *object)
 {
 	return g_slist_length (event_loop_registrants) == 1
 		&& event_loop_registrants->data == object;
@@ -151,7 +151,7 @@ nautilus_main_event_loop_quit (gboolean explicit)
 		   that now since gnome-session doesn't restart apps except on startup. */
 	}
 	while (event_loop_registrants != NULL) {
-		gtk_object_destroy (event_loop_registrants->data);
+		gtk_widget_destroy (event_loop_registrants->data);
 	}
 }
 
diff --git a/src/nautilus-navigation-bar.c b/src/nautilus-navigation-bar.c
index 26da78c..5340f86 100644
--- a/src/nautilus-navigation-bar.c
+++ b/src/nautilus-navigation-bar.c
@@ -53,14 +53,11 @@ EEL_IMPLEMENT_MUST_OVERRIDE_SIGNAL (nautilus_navigation_bar, set_location)
 static void
 nautilus_navigation_bar_class_init (NautilusNavigationBarClass *klass)
 {
-	GtkObjectClass *object_class;
 	GtkBindingSet *binding_set;
 
-	object_class = GTK_OBJECT_CLASS (klass);
-	
 	signals[ACTIVATE] = g_signal_new
 		("activate",
-		 G_TYPE_FROM_CLASS (object_class),
+		 G_TYPE_FROM_CLASS (klass),
 		 G_SIGNAL_RUN_LAST,
 		 G_STRUCT_OFFSET (NautilusNavigationBarClass,
 				    activate),
@@ -70,7 +67,7 @@ nautilus_navigation_bar_class_init (NautilusNavigationBarClass *klass)
 
 	signals[CANCEL] = g_signal_new
 		("cancel",
-		 G_TYPE_FROM_CLASS (object_class),
+		 G_TYPE_FROM_CLASS (klass),
 		 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
 		 G_STRUCT_OFFSET (NautilusNavigationBarClass,
 				    cancel),
@@ -80,7 +77,7 @@ nautilus_navigation_bar_class_init (NautilusNavigationBarClass *klass)
 
 	signals[LOCATION_CHANGED] = g_signal_new
 		("location_changed",
-		 G_TYPE_FROM_CLASS (object_class),
+		 G_TYPE_FROM_CLASS (klass),
 		 G_SIGNAL_RUN_LAST,
 		 G_STRUCT_OFFSET (NautilusNavigationBarClass,
 				    location_changed),
diff --git a/src/nautilus-navigation-window-menus.c b/src/nautilus-navigation-window-menus.c
index 3b9fafc..6f3fa0e 100644
--- a/src/nautilus-navigation-window-menus.c
+++ b/src/nautilus-navigation-window-menus.c
@@ -113,7 +113,7 @@ forget_history_if_yes (GtkDialog *dialog, int response, gpointer callback_data)
 	if (response == RESPONSE_FORGET) {
 		nautilus_forget_history ();
 	}
-	gtk_object_destroy (GTK_OBJECT (dialog));
+	gtk_widget_destroy (GTK_WIDGET (dialog));
 }
 
 static void
diff --git a/src/nautilus-navigation-window.c b/src/nautilus-navigation-window.c
index 7563f55..6aadb8a 100644
--- a/src/nautilus-navigation-window.c
+++ b/src/nautilus-navigation-window.c
@@ -563,7 +563,7 @@ nautilus_navigation_window_button_press_event (GtkWidget *widget,
 }
 
 static void
-nautilus_navigation_window_destroy (GtkObject *object)
+nautilus_navigation_window_destroy (GtkWidget *object)
 {
 	NautilusNavigationWindow *window;
 	
@@ -579,7 +579,7 @@ nautilus_navigation_window_destroy (GtkObject *object)
 	window->details->content_paned = NULL;
 	window->details->split_view_hpane = NULL;
 
-	GTK_OBJECT_CLASS (parent_class)->destroy (object);
+	GTK_WIDGET_CLASS (parent_class)->destroy (object);
 }
 
 static void
@@ -1170,7 +1170,7 @@ nautilus_navigation_window_class_init (NautilusNavigationWindowClass *class)
 	NAUTILUS_WINDOW_CLASS (class)->bookmarks_placeholder = MENU_PATH_BOOKMARKS_PLACEHOLDER;
 	
 	G_OBJECT_CLASS (class)->finalize = nautilus_navigation_window_finalize;
-	GTK_OBJECT_CLASS (class)->destroy = nautilus_navigation_window_destroy;
+	GTK_WIDGET_CLASS (class)->destroy = nautilus_navigation_window_destroy;
 	GTK_WIDGET_CLASS (class)->show = nautilus_navigation_window_show;
 	GTK_WIDGET_CLASS (class)->unrealize = nautilus_navigation_window_unrealize;
 	GTK_WIDGET_CLASS (class)->window_state_event = nautilus_navigation_window_state_event;
diff --git a/src/nautilus-pathbar.c b/src/nautilus-pathbar.c
index e4eb76e..7597715 100644
--- a/src/nautilus-pathbar.c
+++ b/src/nautilus-pathbar.c
@@ -348,12 +348,10 @@ static void
 nautilus_path_bar_class_init (NautilusPathBarClass *path_bar_class)
 {
         GObjectClass *gobject_class;
-        GtkObjectClass *object_class;
         GtkWidgetClass *widget_class;
         GtkContainerClass *container_class;
 
         gobject_class = (GObjectClass *) path_bar_class;
-        object_class = (GtkObjectClass *) path_bar_class;
         widget_class = (GtkWidgetClass *) path_bar_class;
         container_class = (GtkContainerClass *) path_bar_class;
 
diff --git a/src/nautilus-window-bookmarks.c b/src/nautilus-window-bookmarks.c
index 84d0fa0..f6cae77 100644
--- a/src/nautilus-window-bookmarks.c
+++ b/src/nautilus-window-bookmarks.c
@@ -62,7 +62,7 @@ remove_bookmarks_for_uri_if_yes (GtkDialog *dialog, int response, gpointer callb
 		nautilus_bookmark_list_delete_items_with_uri (window->details->bookmark_list, uri);
 	}
 
-	gtk_object_destroy (GTK_OBJECT (dialog));
+	gtk_widget_destroy (GTK_WIDGET (dialog));
 }
 
 static void
diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c
index bbaea00..99a9c05 100644
--- a/src/nautilus-window-manage-views.c
+++ b/src/nautilus-window-manage-views.c
@@ -1201,11 +1201,11 @@ got_file_info_for_view_selection_callback (NautilusFile *file,
 						g_object_unref (root);
 					}
 				} else {
-					gtk_object_destroy (GTK_OBJECT (window));
+					gtk_widget_destroy (GTK_WIDGET (window));
 				}
 			} else {
 				/* Since this is a window, destroying it will also unref it. */
-				gtk_object_destroy (GTK_OBJECT (window));
+				gtk_widget_destroy (GTK_WIDGET (window));
 			}
 		} else {
 			/* Clean up state of already-showing window */
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index eb1b6b5..e305bcb 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -187,10 +187,10 @@ nautilus_window_init (NautilusWindow *window)
 	g_signal_connect_object (nautilus_signaller_get_current (), "popup_menu_changed",
 			 G_CALLBACK (nautilus_window_load_extension_menus), window, G_CONNECT_SWAPPED);
 
-	gtk_quit_add_destroy (1, GTK_OBJECT (window));
+	gtk_quit_add_destroy (1, GTK_WIDGET (window));
 
 	/* Keep the main event loop alive as long as the window exists */
-	nautilus_main_event_loop_register (GTK_OBJECT (window));
+	nautilus_main_event_loop_register (GTK_WIDGET (window));
 }
 
 /* Unconditionally synchronize the GtkUIManager of WINDOW. */
@@ -608,7 +608,7 @@ free_stored_viewers (NautilusWindow *window)
 }
 
 static void
-nautilus_window_destroy (GtkObject *object)
+nautilus_window_destroy (GtkWidget *object)
 {
 	NautilusWindow *window;
 	GList *panes_copy;
@@ -624,7 +624,7 @@ nautilus_window_destroy (GtkObject *object)
 	g_assert (window->details->panes == NULL);
 	g_assert (window->details->active_pane == NULL);
 
-	GTK_OBJECT_CLASS (nautilus_window_parent_class)->destroy (object);
+	GTK_WIDGET_CLASS (nautilus_window_parent_class)->destroy (object);
 }
 
 static void
@@ -1997,7 +1997,7 @@ nautilus_window_class_init (NautilusWindowClass *class)
 	G_OBJECT_CLASS (class)->constructed = nautilus_window_constructed;
 	G_OBJECT_CLASS (class)->get_property = nautilus_window_get_property;
 	G_OBJECT_CLASS (class)->set_property = nautilus_window_set_property;
-	GTK_OBJECT_CLASS (class)->destroy = nautilus_window_destroy;
+	GTK_WIDGET_CLASS (class)->destroy = nautilus_window_destroy;
 	GTK_WIDGET_CLASS (class)->show = nautilus_window_show;
 	GTK_WIDGET_CLASS (class)->size_request = nautilus_window_size_request;
 	GTK_WIDGET_CLASS (class)->realize = nautilus_window_realize;
