Index: libnautilus-private/nautilus-icon-container.c
===================================================================
RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.c,v
retrieving revision 1.395
diff -u -p -r1.395 nautilus-icon-container.c
--- libnautilus-private/nautilus-icon-container.c	29 Aug 2005 09:33:28 -0000	1.395
+++ libnautilus-private/nautilus-icon-container.c	31 Aug 2005 12:21:07 -0000
@@ -1635,7 +1637,7 @@ redo_layout_internal (NautilusIconContai
 	 * and only re-lay-out when it's really needed.
 	 */
 	if (container->details->auto_layout
-	    && container->details->drag_state != DRAG_STATE_STRETCH) {
+	    || container->details->drag_state != DRAG_STATE_STRETCH) {
 		resort (container);
 		lay_down_icons (container, container->details->icons, 0);
 	}
Index: src/file-manager/fm-desktop-icon-view.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/file-manager/fm-desktop-icon-view.c,v
retrieving revision 1.224
diff -u -p -r1.224 fm-desktop-icon-view.c
--- src/file-manager/fm-desktop-icon-view.c	2 Jun 2005 14:35:14 -0000	1.224
+++ src/file-manager/fm-desktop-icon-view.c	31 Aug 2005 12:21:07 -0000
@@ -353,6 +354,25 @@ fm_desktop_icon_view_handle_middle_click
 }
 
 static void
+screen_size_changed (GdkScreen *screen,
+		     FMDesktopIconView *icon_view)
+{
+	GtkAllocation allocation;
+
+	screen = gtk_widget_get_screen (GTK_WIDGET (icon_view));
+
+	allocation.x = 0;
+	allocation.y = 0;
+	allocation.width = gdk_screen_get_width (screen);
+	allocation.height = gdk_screen_get_height (screen);
+	gtk_widget_size_allocate (GTK_WIDGET (get_icon_container(icon_view)),
+				  &allocation);
+
+	net_workarea_changed (icon_view,
+			      gdk_screen_get_root_window (screen));
+}
+
+static void
 unrealized_callback (GtkWidget *widget, FMDesktopIconView *desktop_icon_view)
 {
 	g_return_if_fail (desktop_icon_view->details->root_window != NULL);
@@ -374,6 +394,8 @@ realized_callback (GtkWidget *widget, FM
 	g_return_if_fail (desktop_icon_view->details->root_window == NULL);
 
 	screen = gtk_widget_get_screen (widget);
+	g_signal_connect (screen, "size-changed",
+			  G_CALLBACK (screen_size_changed), widget);
 
 	/* Ugly HACK for the problem that the views realize at the
 	 * wrong size and then get resized. (This is a problem with
