diff -Nur nautilus-2.30.0.orig/src/nautilus-navigation-window.c nautilus-2.30.0/src/nautilus-navigation-window.c
--- nautilus-2.30.0.orig/src/nautilus-navigation-window.c	2010-03-11 14:26:24.000000000 +0100
+++ nautilus-2.30.0/src/nautilus-navigation-window.c	2010-04-10 13:50:52.523095316 +0200
@@ -120,6 +120,49 @@
 #endif
 };
 
+static GtkWidget *
+create_zoom_slider_widget_for_view (NautilusNavigationWindow *window)
+{
+	GtkWidget *box, *scale;
+	GtkWidget *zoom_in_image, *zoom_in_event_box;
+	GtkWidget *zoom_out_image, *zoom_out_event_box;
+
+	box = gtk_hbox_new (FALSE, 0);
+
+	zoom_in_image = gtk_image_new_from_stock (GTK_STOCK_ZOOM_IN, GTK_ICON_SIZE_MENU);
+	zoom_in_event_box = gtk_event_box_new ();
+
+	gtk_container_add (GTK_CONTAINER (zoom_in_event_box), zoom_in_image);
+	g_signal_connect_object (G_OBJECT (zoom_in_event_box), "button-press-event", 
+				 G_CALLBACK (nautilus_window_zoom_in), window, G_CONNECT_SWAPPED);
+
+	zoom_out_image = gtk_image_new_from_stock (GTK_STOCK_ZOOM_OUT, GTK_ICON_SIZE_MENU);
+	zoom_out_event_box = gtk_event_box_new ();
+	gtk_container_add (GTK_CONTAINER (zoom_out_event_box), zoom_out_image);
+	    
+	g_signal_connect_object (G_OBJECT (zoom_out_event_box), "button-press-event", 
+		         G_CALLBACK (nautilus_window_zoom_out), window, G_CONNECT_SWAPPED);
+
+	scale = gtk_hscale_new_with_range (NAUTILUS_ZOOM_LEVEL_SMALLEST, NAUTILUS_ZOOM_LEVEL_LARGEST, 1);
+	window->details->zs_range = GTK_RANGE(scale);
+	
+	gtk_widget_set_size_request (scale, 100, -1); /* This is arbitrary */
+	    
+	gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
+	gtk_scale_set_digits (GTK_SCALE (scale), 0);
+	g_object_set (scale, "update-policy", GTK_UPDATE_CONTINUOUS, NULL);
+	g_signal_connect_object (scale, "value-changed", G_CALLBACK (zoom_slider_value_changed), window, G_CONNECT_SWAPPED);
+
+
+	gtk_box_pack_end (GTK_BOX (box), zoom_in_event_box, FALSE, FALSE, 0);
+	gtk_box_pack_end (GTK_BOX (box), scale, TRUE, TRUE, 0);
+	gtk_box_pack_end (GTK_BOX (box), zoom_out_event_box, FALSE, FALSE, 0);
+
+	gtk_widget_show_all (box);
+
+	return box;
+}
+
 static void
 nautilus_navigation_window_init (NautilusNavigationWindow *window)
 {
@@ -129,6 +172,7 @@
 	NautilusNavigationWindowPane *pane;
 	GtkWidget *hpaned;
 	GtkWidget *vbox;
+	GtkWidget *zoom_slider;
 
 	win = NAUTILUS_WINDOW (window);
 
@@ -187,6 +231,10 @@
 
 	nautilus_navigation_window_initialize_toolbars (window);
 
+	zoom_slider = create_zoom_slider_widget_for_view (window);
+	gtk_box_pack_end (GTK_BOX (NAUTILUS_WINDOW (window)->details->statusbar), zoom_slider, FALSE, FALSE, 0);
+	window->details->zoom_slider = zoom_slider;
+        
 	/* Set initial sensitivity of some buttons & menu items 
 	 * now that they're all created.
 	 */
@@ -740,6 +788,7 @@
 	nautilus_notebook_sync_tab_label (notebook, slot);
 }
 
+
 static NautilusIconInfo *
 real_get_icon (NautilusWindow *window,
 	       NautilusWindowSlot *slot)
diff -Nur nautilus-2.30.0.orig/src/nautilus-navigation-window-ui.xml nautilus-2.30.0/src/nautilus-navigation-window-ui.xml
--- nautilus-2.30.0.orig/src/nautilus-navigation-window-ui.xml	2010-01-22 16:45:17.000000000 +0100
+++ nautilus-2.30.0/src/nautilus-navigation-window-ui.xml	2010-04-10 12:45:41.746821019 +0200
@@ -67,7 +67,6 @@
 	<toolitem name="Home" action="Home"/>
 	<toolitem name="Computer" action="Go to Computer"/>
 	<separator/>
-	<toolitem name="Zoom" action="Zoom"/>
 	<toolitem name="ViewAs" action="ViewAs"/>
 	<toolitem name="Search" action="Search"/>
 	<placeholder name="Extra Buttons Placeholder">
diff -Nur nautilus-2.30.0.orig/src/nautilus-window.c nautilus-2.30.0/src/nautilus-window.c
--- nautilus-2.30.0.orig/src/nautilus-window.c	2010-03-17 11:14:05.000000000 +0100
+++ nautilus-2.30.0/src/nautilus-window.c	2010-04-10 13:15:41.662474354 +0200
@@ -446,6 +446,40 @@
 	nautilus_window_pane_zoom_to_default (window->details->active_pane);
 }
 
+void
+zoom_slider_update_value (NautilusWindow *window)
+{
+	NautilusWindowSlot *slot;
+	NautilusZoomLevel zoom_level;
+
+	g_assert (window != NULL);
+
+	slot = window->details->active_pane->active_slot;
+
+	if (slot->content_view != NULL && 
+	    NAUTILUS_NAVIGATION_WINDOW (window)->details->zoom_slider != NULL) {
+		zoom_level = nautilus_view_get_zoom_level (slot->content_view);
+		gtk_range_set_value (NAUTILUS_NAVIGATION_WINDOW (window)->details->zs_range, zoom_level);
+	}
+}
+
+void
+zoom_slider_value_changed (NautilusWindow *window)
+{
+	NautilusWindowSlot *slot;
+	NautilusZoomLevel zoom_level;
+
+	g_assert (window != NULL);
+
+	slot = window->details->active_pane->active_slot;
+
+	if (slot->content_view != NULL) {
+	    zoom_level = (NautilusZoomLevel) gtk_range_get_value
+            (NAUTILUS_NAVIGATION_WINDOW (window)->details->zs_range);
+	    nautilus_view_zoom_to_level (slot->content_view, zoom_level);
+    }
+}
+
 /* Code should never force the window taller than this size.
  * (The user can still stretch the window taller if desired).
  */
@@ -1445,6 +1479,7 @@
 	 * a zooming operation.
 	 */
 	nautilus_window_sync_zoom_widgets (window);
+	zoom_slider_update_value ( window );
 }
 
 
diff -Nur nautilus-2.30.0.orig/src/nautilus-window-private.h nautilus-2.30.0/src/nautilus-window-private.h
--- nautilus-2.30.0.orig/src/nautilus-window-private.h	2010-03-10 14:28:39.000000000 +0100
+++ nautilus-2.30.0/src/nautilus-window-private.h	2010-04-10 13:17:10.475799726 +0200
@@ -119,6 +119,10 @@
         	
         /* split view */
         GtkWidget *split_view_hpane;
+
+        /* zoom slider */
+        GtkWidget   *zoom_slider;
+        GtkRange    *zs_range;
 };
 
 #define NAUTILUS_MENU_PATH_BACK_ITEM			"/menu/Go/Back"
@@ -187,6 +191,9 @@
                                                                           NautilusZoomLevel  level);
 void               nautilus_window_zoom_to_default                       (NautilusWindow    *window);
 
+void               zoom_slider_update_value                              (NautilusWindow    *window);
+void               zoom_slider_value_changed                             (NautilusWindow    *window);
+
 NautilusWindowSlot *nautilus_window_open_slot                            (NautilusWindowPane *pane,
 									  NautilusWindowOpenSlotFlags flags);
 void                nautilus_window_close_slot                           (NautilusWindowSlot *slot);
diff -Nur nautilus-2.30.0.orig/src/nautilus-window-slot.c nautilus-2.30.0/src/nautilus-window-slot.c
--- nautilus-2.30.0.orig/src/nautilus-window-slot.c	2009-12-16 17:53:51.000000000 +0100
+++ nautilus-2.30.0/src/nautilus-window-slot.c	2010-04-10 13:18:00.006630702 +0200
@@ -115,6 +115,7 @@
 	nautilus_window_sync_allow_stop (window, slot);
 	nautilus_window_sync_title (window, slot);
 	nautilus_window_sync_zoom_widgets (window);
+	zoom_slider_update_value ( window );
 	nautilus_window_pane_sync_location_widgets (slot->pane);
 	nautilus_window_pane_sync_search_widgets (slot->pane);
 
