diff --git a/configure.in b/configure.in
index f97be7c..2d9a264 100644
--- a/configure.in
+++ b/configure.in
@@ -343,7 +343,7 @@ AC_SUBST(CORE_CFLAGS)
 CORE_LIBS="`$PKG_CONFIG --libs $CORE_MODULES` $x_libs"
 AC_SUBST(CORE_LIBS)
 
-DISABLE_DEPRECATED_CFLAGS="-DG_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED"
+DISABLE_DEPRECATED_CFLAGS=""
 AC_SUBST(DISABLE_DEPRECATED_CFLAGS)
 
 dnl Multimedia keys
diff --git a/src/nautilus-places-sidebar.c b/src/nautilus-places-sidebar.c
index c70575e..0eefc91 100644
--- a/src/nautilus-places-sidebar.c
+++ b/src/nautilus-places-sidebar.c
@@ -90,6 +90,8 @@ typedef struct {
 	gboolean mounting;
 	NautilusWindowSlotInfo *go_to_after_mount_slot;
 	NautilusWindowOpenFlags go_to_after_mount_flags;
+
+	GtkTreePath *eject_highlight_path;
 } NautilusPlacesSidebar;
 
 typedef struct {
@@ -118,6 +120,7 @@ enum {
 	PLACES_SIDEBAR_COLUMN_BOOKMARK,
 	PLACES_SIDEBAR_COLUMN_NO_BOOKMARK,
 	PLACES_SIDEBAR_COLUMN_TOOLTIP,
+	PLACES_SIDEBAR_COLUMN_EJECT_ICON,
 	
 	PLACES_SIDEBAR_COLUMN_COUNT
 };
@@ -201,6 +204,78 @@ G_DEFINE_TYPE_WITH_CODE (NautilusPlacesSidebarProvider, nautilus_places_sidebar_
 			 G_IMPLEMENT_INTERFACE (NAUTILUS_TYPE_SIDEBAR_PROVIDER,
 						sidebar_provider_iface_init));
 
+/* Copied from gtkcellrendererpixbuf.c */
+static GdkPixbuf *
+create_colorized_pixbuf (GdkPixbuf *src, 
+			 GdkColor  *new_color)
+{
+  gint i, j;
+  gint width, height, has_alpha, src_row_stride, dst_row_stride;
+  gint red_value, green_value, blue_value;
+  guchar *target_pixels;
+  guchar *original_pixels;
+  guchar *pixsrc;
+  guchar *pixdest;
+  GdkPixbuf *dest;
+  
+  red_value = new_color->red / 255.0;
+  green_value = new_color->green / 255.0;
+  blue_value = new_color->blue / 255.0;
+  
+  dest = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (src),
+			 gdk_pixbuf_get_has_alpha (src),
+			 gdk_pixbuf_get_bits_per_sample (src),
+			 gdk_pixbuf_get_width (src),
+			 gdk_pixbuf_get_height (src));
+  
+  has_alpha = gdk_pixbuf_get_has_alpha (src);
+  width = gdk_pixbuf_get_width (src);
+  height = gdk_pixbuf_get_height (src);
+  src_row_stride = gdk_pixbuf_get_rowstride (src);
+  dst_row_stride = gdk_pixbuf_get_rowstride (dest);
+  target_pixels = gdk_pixbuf_get_pixels (dest);
+  original_pixels = gdk_pixbuf_get_pixels (src);
+  
+  for (i = 0; i < height; i++) {
+    pixdest = target_pixels + i*dst_row_stride;
+    pixsrc = original_pixels + i*src_row_stride;
+    for (j = 0; j < width; j++) {		
+      *pixdest++ = (*pixsrc++ * red_value) >> 8;
+      *pixdest++ = (*pixsrc++ * green_value) >> 8;
+      *pixdest++ = (*pixsrc++ * blue_value) >> 8;
+      if (has_alpha) {
+	*pixdest++ = *pixsrc++;
+      }
+    }
+  }
+  return dest;
+}
+
+static GdkPixbuf *
+get_eject_icon (gboolean highlighted)
+{
+	GdkPixbuf *eject;
+	GIcon *eject_icon;
+	NautilusIconInfo *eject_icon_info;
+	int icon_size;
+
+	icon_size = nautilus_get_icon_size_for_stock_size (GTK_ICON_SIZE_MENU);
+
+	eject_icon = g_icon_new_for_string ("media-eject", NULL);  
+	eject_icon_info = nautilus_icon_info_lookup (eject_icon, icon_size);
+	g_object_unref (eject_icon_info);
+
+	eject = nautilus_icon_info_get_pixbuf_at_size (eject_icon_info, icon_size);
+	if (highlighted) {
+		GdkPixbuf *high;
+		GdkColor white;
+		gdk_color_parse ("#ddd", &white);
+		high = create_colorized_pixbuf (eject, &white);
+		return high; 
+	}
+	return eject;
+}
+
 static GtkTreeIter
 add_place (NautilusPlacesSidebar *sidebar,
 	   PlaceType place_type,
@@ -215,6 +290,7 @@ add_place (NautilusPlacesSidebar *sidebar,
 {
 	GdkPixbuf            *pixbuf;
 	GtkTreeIter           iter, child_iter;
+	GdkPixbuf	     *eject;
 	NautilusIconInfo *icon_info;
 	int icon_size;
 	gboolean show_eject, show_unmount;
@@ -238,6 +314,7 @@ add_place (NautilusPlacesSidebar *sidebar,
 		show_eject_button = (show_unmount || show_eject);
 	}
 
+	eject = get_eject_icon (FALSE);
 	gtk_list_store_append (sidebar->store, &iter);
 	gtk_list_store_set (sidebar->store, &iter,
 			    PLACES_SIDEBAR_COLUMN_ICON, pixbuf,
@@ -253,6 +330,7 @@ add_place (NautilusPlacesSidebar *sidebar,
 			    PLACES_SIDEBAR_COLUMN_BOOKMARK, place_type != PLACES_BOOKMARK,
 			    PLACES_SIDEBAR_COLUMN_NO_BOOKMARK, place_type == PLACES_BOOKMARK,
 			    PLACES_SIDEBAR_COLUMN_TOOLTIP, tooltip,
+			    PLACES_SIDEBAR_COLUMN_EJECT_ICON, eject,
 			    -1);
 
 	if (pixbuf != NULL) {
@@ -688,11 +766,11 @@ drive_changed_callback (GVolumeMonitor *volume_monitor,
 }
 
 static gboolean
-clicked_eject_button (NautilusPlacesSidebar *sidebar,
-		      GtkTreePath **path)
+over_eject_button (NautilusPlacesSidebar *sidebar,
+		   gint x,
+		   gint y,
+	 	   GtkTreePath **path)
 {
-	GdkEvent *event = gtk_get_current_event ();
-	GdkEventButton *button_event = (GdkEventButton *) event;
 	GtkTreeViewColumn *column;
 	GtkTextDirection direction;
 	int width, total_width;
@@ -700,9 +778,8 @@ clicked_eject_button (NautilusPlacesSidebar *sidebar,
 
 	*path = NULL;
 
-	if ((event->type == GDK_BUTTON_PRESS || event->type == GDK_BUTTON_RELEASE) &&
-	    gtk_tree_view_get_path_at_pos (sidebar->tree_view,
-					   button_event->x, button_event->y,
+	if (gtk_tree_view_get_path_at_pos (sidebar->tree_view,
+					   x, y,
 					   path, &column, NULL, NULL)) {
 		total_width = 0;
 
@@ -728,16 +805,33 @@ clicked_eject_button (NautilusPlacesSidebar *sidebar,
 
 		eject_button_size = nautilus_get_icon_size_for_stock_size (GTK_ICON_SIZE_MENU);
 
-		if (button_event->x - total_width >= 0 &&
-		    button_event->x - total_width <= eject_button_size) {
+		if (x - total_width >= 0 &&
+		    x - total_width <= eject_button_size) {
 			return TRUE;
 		}
 	}
 
-	if (*path != NULL) {
-		gtk_tree_path_free (*path);
-	}
+	return FALSE;
+}
+
+static gboolean
+clicked_eject_button (NautilusPlacesSidebar *sidebar,
+		      GtkTreePath **path)
+{
+	GdkEvent *event = gtk_get_current_event ();
+	GdkEventButton *button_event = (GdkEventButton *) event;
+	gboolean ret;
+
+	*path = NULL;
 
+	if (event->type == GDK_BUTTON_PRESS) {
+		ret = over_eject_button (sidebar, button_event->x, button_event->y, path);
+		if (ret) {
+			return TRUE;
+		}
+	} else if (event->type == GDK_BUTTON_RELEASE) {
+		g_object_set_data (G_OBJECT (sidebar->tree_view), "myrect", NULL);
+ 	}
 	return FALSE;
 }
 
@@ -2386,6 +2480,61 @@ bookmarks_button_release_event_cb (GtkWidget *widget,
 	return FALSE;
 }
 
+static void
+update_eject_buttons (NautilusPlacesSidebar *sidebar,
+		      GtkTreePath 	    *path)
+{
+	GtkTreeIter iter;
+
+	if (path && sidebar->eject_highlight_path && gtk_tree_path_compare (sidebar->eject_highlight_path, path) == 0) {
+		/* Same path - highlight up to date */		
+		return;
+	}
+
+	/* Reset last path */
+	if (sidebar->eject_highlight_path) {
+		gtk_tree_model_get_iter (GTK_TREE_MODEL (sidebar->store), &iter, sidebar->eject_highlight_path);
+		gtk_list_store_set (GTK_LIST_STORE (sidebar->store), &iter, PLACES_SIDEBAR_COLUMN_EJECT_ICON, get_eject_icon (FALSE), -1);
+
+		gtk_tree_path_free (sidebar->eject_highlight_path);
+	}
+	
+	/* Update current path */
+	if (path) {
+		gtk_tree_model_get_iter (GTK_TREE_MODEL (sidebar->store), &iter, path);
+		gtk_list_store_set (GTK_LIST_STORE (sidebar->store), &iter, PLACES_SIDEBAR_COLUMN_EJECT_ICON, get_eject_icon (TRUE), -1);
+	}
+
+	if (path) {
+		sidebar->eject_highlight_path = gtk_tree_path_copy (path);
+	} else {
+		sidebar->eject_highlight_path = NULL;
+	}
+}
+
+static gboolean
+bookmarks_motion_event_cb (GtkWidget             *widget,
+			   GdkEventMotion        *event,
+			   NautilusPlacesSidebar *sidebar)
+{
+	GtkTreePath *path;
+	GtkTreeModel *model;
+
+	model = GTK_TREE_MODEL (sidebar->filter_model);
+
+	if (over_eject_button (sidebar, event->x, event->y, &path)) {
+		update_eject_buttons (sidebar, path);
+	} else {
+		update_eject_buttons (sidebar, NULL);
+	}
+
+	if (path) {
+		gtk_tree_path_free (path);
+	}
+
+	return TRUE;
+}
+
 /* Callback used when a button is pressed on the shortcuts list.  
  * We trap button 3 to bring up a popup menu, and button 2 to
  * open in a new tab.
@@ -2525,13 +2674,13 @@ nautilus_places_sidebar_init (NautilusPlacesSidebar *sidebar)
 	cell = gtk_cell_renderer_pixbuf_new ();
 	g_object_set (cell,
 		      "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE,
-		      "icon-name", "media-eject",
 		      "stock-size", GTK_ICON_SIZE_MENU,
 		      "xpad", EJECT_BUTTON_XPAD,
 		      NULL);
 	gtk_tree_view_column_pack_start (col, cell, FALSE);
 	gtk_tree_view_column_set_attributes (col, cell,
 					     "visible", PLACES_SIDEBAR_COLUMN_EJECT,
+					     "pixbuf", PLACES_SIDEBAR_COLUMN_EJECT_ICON,
 					     NULL);
 
 	cell = gtk_cell_renderer_text_new ();
@@ -2574,7 +2723,8 @@ nautilus_places_sidebar_init (NautilusPlacesSidebar *sidebar)
 					     G_TYPE_BOOLEAN,
 					     G_TYPE_BOOLEAN,
 					     G_TYPE_BOOLEAN,
-					     G_TYPE_STRING
+					     G_TYPE_STRING,
+					     GDK_TYPE_PIXBUF
 					     );
 
 	gtk_tree_view_set_tooltip_column (tree_view, PLACES_SIDEBAR_COLUMN_TOOLTIP);
@@ -2621,6 +2771,8 @@ nautilus_places_sidebar_init (NautilusPlacesSidebar *sidebar)
 			  G_CALLBACK (bookmarks_popup_menu_cb), sidebar);
 	g_signal_connect (tree_view, "button-press-event",
 			  G_CALLBACK (bookmarks_button_press_event_cb), sidebar);
+	g_signal_connect (tree_view, "motion-notify-event",
+			  G_CALLBACK (bookmarks_motion_event_cb), sidebar);
 	g_signal_connect (tree_view, "button-release-event",
 			  G_CALLBACK (bookmarks_button_release_event_cb), sidebar);
 
