[nautilus/wip/ernestask/long-live-the-desktop: 1/6] general: remove desktop support



commit f24d54d40cef1b9d339dbee4e77eac7ce69a3ca8
Author: Ernestas Kulik <ernestask gnome org>
Date:   Tue Dec 12 16:56:29 2017 +0200

    general: remove desktop support

 build-aux/flatpak/org.gnome.Nautilus.json          |    1 -
 config.h.meson                                     |    1 -
 data/.gitignore                                    |    2 -
 data/meson.build                                   |   24 -
 data/nautilus-autostart.desktop.in                 |    7 -
 data/nautilus-classic.desktop.in                   |   11 -
 data/org.gnome.nautilus.gschema.xml                |   56 +-
 data/run-uncrustify.sh                             |    2 +-
 docs/nautilus.1                                    |    7 +-
 meson.build                                        |    8 -
 meson_options.txt                                  |    3 -
 nautilus-desktop/.gitignore                        |    1 -
 nautilus-desktop/main-desktop.c                    |   49 -
 nautilus-desktop/meson.build                       |   30 -
 nautilus-desktop/nautilus-desktop-application.c    |  280 --
 nautilus-desktop/nautilus-desktop-application.h    |   36 -
 .../nautilus-desktop-canvas-view-container.c       |  215 --
 .../nautilus-desktop-canvas-view-container.h       |   35 -
 nautilus-desktop/nautilus-desktop-canvas-view.c    |  794 ------
 nautilus-desktop/nautilus-desktop-canvas-view.h    |   54 -
 nautilus-desktop/nautilus-desktop-directory-file.c |  568 -----
 nautilus-desktop/nautilus-desktop-directory-file.h |   53 -
 nautilus-desktop/nautilus-desktop-directory.c      |  588 -----
 nautilus-desktop/nautilus-desktop-directory.h      |   58 -
 nautilus-desktop/nautilus-desktop-icon-file.c      |  550 ----
 nautilus-desktop/nautilus-desktop-icon-file.h      |   60 -
 nautilus-desktop/nautilus-desktop-link-monitor.c   |  460 ----
 nautilus-desktop/nautilus-desktop-link-monitor.h   |   60 -
 nautilus-desktop/nautilus-desktop-link.c           |  482 ----
 nautilus-desktop/nautilus-desktop-link.h           |   77 -
 nautilus-desktop/nautilus-desktop-metadata.c       |   90 -
 nautilus-desktop/nautilus-desktop-metadata.h       |   43 -
 nautilus-desktop/nautilus-desktop-window-slot.c    |   69 -
 nautilus-desktop/nautilus-desktop-window-slot.h    |   36 -
 nautilus-desktop/nautilus-desktop-window.c         |  533 ----
 nautilus-desktop/nautilus-desktop-window.h         |   59 -
 po/POTFILES.in                                     |    6 -
 src/meson.build                                    |   11 +-
 src/nautilus-application.c                         |    4 +-
 src/nautilus-bookmark.c                            |    3 +-
 src/nautilus-canvas-container.c                    | 2685 ++------------------
 src/nautilus-canvas-container.h                    |   31 +-
 src/nautilus-canvas-dnd.c                          |   96 +-
 src/nautilus-canvas-private.h                      |   29 -
 src/nautilus-canvas-view.c                         |  478 +---
 src/nautilus-canvas-view.h                         |    1 -
 src/nautilus-desktop-item-properties.c             |  563 ----
 src/nautilus-desktop-item-properties.h             |   46 -
 src/nautilus-directory.c                           |    5 -
 src/nautilus-files-view.c                          |   59 +-
 src/nautilus-files-view.h                          |    7 -
 src/nautilus-global-preferences.c                  |    2 -
 src/nautilus-global-preferences.h                  |   14 -
 src/nautilus-icon-names.h                          |    7 -
 src/nautilus-lib-self-check-functions.h            |    1 -
 src/nautilus-list-view.c                           |    9 -
 src/nautilus-metadata.c                            |    3 -
 src/nautilus-metadata.h                            |    4 -
 src/nautilus-properties-window.c                   |   17 -
 src/nautilus-view-icon-controller.c                |    7 -
 src/nautilus-view.h                                |    1 -
 src/resources/css/Adwaita.css                      |   23 -
 src/resources/css/nautilus.css                     |    7 -
 .../ui/nautilus-files-view-context-menus.ui        |   36 -
 64 files changed, 273 insertions(+), 9284 deletions(-)
---
diff --git a/build-aux/flatpak/org.gnome.Nautilus.json b/build-aux/flatpak/org.gnome.Nautilus.json
index 87b2792d1..03b667658 100644
--- a/build-aux/flatpak/org.gnome.Nautilus.json
+++ b/build-aux/flatpak/org.gnome.Nautilus.json
@@ -84,7 +84,6 @@
             "builddir": true,
             "name": "nautilus",
             "config-opts": [
-                "-Denable-desktop=false",
                 "-Denable-selinux=false",
                 "--libdir=/app/lib"
             ],
diff --git a/config.h.meson b/config.h.meson
index ad2817675..8dbcaef67 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -4,7 +4,6 @@
 #mesondefine HAVE_EXEMPI
 #mesondefine HAVE_SELINUX
 #mesondefine HAVE_X11_XF86KEYSYM_H
-#mesondefine ENABLE_DESKTOP
 #mesondefine ENABLE_PACKAGEKIT
 #mesondefine LOCALEDIR
 #mesondefine NAUTILUS_DATADIR
diff --git a/data/.gitignore b/data/.gitignore
index fe14726f1..89808d77c 100644
--- a/data/.gitignore
+++ b/data/.gitignore
@@ -1,7 +1,5 @@
 /lineup-parameters
 /nautilus-autorun-software.desktop
-/nautilus-autostart.desktop
-/nautilus-classic.desktop
 /org.freedesktop.FileManager1.service
 /org.gnome.Nautilus.appdata.xml
 /org.gnome.Nautilus.desktop
diff --git a/data/meson.build b/data/meson.build
index a67999761..e185428f4 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -22,24 +22,6 @@ desktop_autorun_software = i18n.merge_file ('desktop-autorun-software',
                                             po_dir: po_dir,
                                             type: 'desktop')
 
-desktop_autostart = i18n.merge_file ('desktop-autostart',
-                                     input: 'nautilus-autostart.desktop.in',
-                                     output: 'nautilus-autostart.desktop',
-                                     install: true,
-                                     install_dir: join_paths (sysconfdir, 'xdg', 'autostart'),
-                                     po_dir: po_dir,
-                                     type: 'desktop')
-
-if get_option ('enable-desktop')
-    desktop_classic = i18n.merge_file ('desktop-classic',
-                                       input: 'nautilus-classic.desktop.in',
-                                       output: 'nautilus-classic.desktop',
-                                       install: true,
-                                       install_dir: desktopdir,
-                                       po_dir: po_dir,
-                                       type: 'desktop')
-endif
-
 appdata = i18n.merge_file ('appdata',
                            input: 'org.gnome.Nautilus.appdata.xml.in',
                            output: 'org.gnome.Nautilus.appdata.xml',
@@ -72,12 +54,6 @@ if desktop_file_validate.found ()
           args: [desktop.full_path ()])
     test ('validate-desktop-autorun-software', desktop_file_validate,
           args: [desktop_autorun_software.full_path ()])
-    test ('validate-desktop-autostart', desktop_file_validate,
-          args: [desktop_autostart.full_path ()])
-    if get_option ('enable-desktop')
-        test ('validate-desktop-classic', desktop_file_validate,
-          args: [desktop_classic.full_path ()])
-    endif
 endif
 
 appstream_util = find_program ('appstream-util', required: false)
diff --git a/data/org.gnome.nautilus.gschema.xml b/data/org.gnome.nautilus.gschema.xml
index 4cbb7647b..d4ca8f2a3 100644
--- a/data/org.gnome.nautilus.gschema.xml
+++ b/data/org.gnome.nautilus.gschema.xml
@@ -68,7 +68,6 @@
     <child schema="org.gnome.nautilus.compression" name="compression"/>
     <child schema="org.gnome.nautilus.icon-view" name="icon-view"/>
     <child schema="org.gnome.nautilus.list-view" name="list-view"/>
-    <child schema="org.gnome.nautilus.desktop" name="desktop"/>
     <child schema="org.gnome.nautilus.window-state" name="window-state"/>
   </schema>
 
@@ -231,7 +230,7 @@
     <key type="as" name="captions">
       <default>[ 'none', 'none', 'none' ]</default>
       <summary>List of possible captions on icons</summary>
-      <description>A list of captions below an icon in the icon view and the desktop. The actual number of 
captions shown depends on the zoom level. Some possible values are: “size”, “type”, “date_modified”, “owner”, 
“group”, “permissions”, and “mime_type”.</description>
+      <description>A list of captions below an icon in the icon view. The actual number of captions shown 
depends on the zoom level. Some possible values are: “size”, “type”, “date_modified”, “owner”, “group”, 
“permissions”, and “mime_type”.</description>
     </key>
     <key name="default-zoom-level" enum="org.gnome.nautilus.CanvasZoomLevel">
       <default>'large'</default>
@@ -269,59 +268,6 @@
     </key>
   </schema>
 
-  <schema path="/org/gnome/nautilus/desktop/" id="org.gnome.nautilus.desktop" gettext-domain="nautilus">
-    <key type="s" name="font">
-      <default l10n="messages" context="desktop-font">''</default>
-      <summary>Desktop font</summary>
-      <description>The font description used for the icons on the desktop.</description>
-    </key>
-    <key type="b" name="home-icon-visible">
-      <default>true</default>
-      <summary>Home icon visible on desktop</summary>
-      <description>If this is set to true, an icon linking to the home folder will be put on the 
desktop.</description>
-    </key>
-    <key type="b" name="trash-icon-visible">
-      <default>true</default>
-      <summary>Trash icon visible on desktop</summary>
-      <description>If this is set to true, an icon linking to the Trash will be put on the 
desktop.</description>
-    </key>
-    <key type="b" name="volumes-visible">
-      <default>true</default>
-      <summary>Show mounted volumes on the desktop</summary>
-      <description>If this is set to true, icons linking to mounted volumes will be put on the 
desktop.</description>
-    </key>
-    <key type="b" name="network-icon-visible">
-      <default>false</default>
-      <summary>Network Servers icon visible on the desktop</summary>
-      <description>If this is set to true, an icon linking to the Network Servers view will be put on the 
desktop.</description>
-    </key>
-    <key type="s" name="home-icon-name">
-      <default l10n="messages" context="home-icon-name">'Home'</default>
-      <summary>Desktop home icon name</summary>
-      <description>This name can be set if you want a custom name for the home icon on the 
desktop.</description>
-    </key>
-    <key type="s" name="trash-icon-name">
-      <default l10n="messages" context="trash-icon-name">'Trash'</default>
-      <summary>Desktop Trash icon name</summary>
-      <description>This name can be set if you want a custom name for the Trash icon on the 
desktop.</description>
-    </key>
-    <key type="s" name="network-icon-name">
-      <default l10n="messages" context="network-icon-name">'Network Servers'</default>
-      <summary>Network servers icon name</summary>
-      <description>This name can be set if you want a custom name for the network servers icon on the 
desktop.</description>
-    </key>
-    <key type="i" name="text-ellipsis-limit">
-      <default>3</default>
-      <summary>Text Ellipsis Limit</summary>
-      <description>An integer specifying how parts of overlong file names should be replaced by ellipses on 
the desktop. If the number is larger than 0, the file name will not exceed the given number of lines. If the 
number is 0 or smaller, no limit is imposed on the number of displayed lines.</description>
-    </key>
-    <key type="b" name="background-fade">
-      <default>true</default>
-      <summary>Fade the background on change</summary>
-      <description>If set to true, then Nautilus will use a fade effect to change the desktop 
background.</description>
-    </key>
-  </schema>
-
   <schema path="/org/gnome/nautilus/window-state/" id="org.gnome.nautilus.window-state" 
gettext-domain="nautilus">
     <key type="s" name="geometry">
       <default>''</default>
diff --git a/data/run-uncrustify.sh b/data/run-uncrustify.sh
index 39bb29006..4f98b5db2 100755
--- a/data/run-uncrustify.sh
+++ b/data/run-uncrustify.sh
@@ -2,7 +2,7 @@
 DATA=$(dirname "$BASH_SOURCE")
 if [ -x "$DATA/lineup-parameters" ];
 then
-    for DIR in "$DATA/../"{src,nautilus-desktop,test,libnautilus-extension,eel,nautilus-sendto-extension}
+    for DIR in "$DATA/../"{src,test,libnautilus-extension,eel,nautilus-sendto-extension}
     do
         for FILE in $(find "$DIR" -name "*.c")
         do
diff --git a/docs/nautilus.1 b/docs/nautilus.1
index f274f5836..70304a1d2 100644
--- a/docs/nautilus.1
+++ b/docs/nautilus.1
@@ -2,7 +2,7 @@
 .\" First parameter, NAME, should be all caps
 .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
 .\" other parameters are allowed: see man(7), man(1)
-.TH Nautilus 1 "23 September 2016"
+.TH Nautilus 1 "12 December 2017"
 .\" Please adjust this date whenever revising the manpage.
 .\"
 .\" Some roff macros, for reference:
@@ -51,11 +51,6 @@ Always open a new window for browsing specified URIs.
 Only create windows for explicitly specified URIs.
 
 .TP
-.B \-\-no-desktop
-Never manage the desktop (ignore the GSettings preference). \fBDeprecated\fR - the
-desktop is managed in a separate binary.
-
-.TP
 .BR \-q ", " \-\-quit
 Quit Nautilus.
 
diff --git a/meson.build b/meson.build
index 576edbe35..d89f1405d 100644
--- a/meson.build
+++ b/meson.build
@@ -63,10 +63,6 @@ conf.set_quoted ('LOCALEDIR', join_paths (prefix, localedir))
 conf.set_quoted ('NAUTILUS_DATADIR', join_paths (datadir, 'nautilus'))
 conf.set_quoted ('NAUTILUS_EXTENSIONDIR', join_paths (prefix, extensiondir))
 
-if get_option ('enable-desktop')
-    conf.set10 ('ENABLE_DESKTOP', true)
-endif
-
 if get_option ('enable-packagekit')
     conf.set10 ('ENABLE_PACKAGEKIT', true)
 endif
@@ -110,10 +106,6 @@ if get_option ('enable-gtk-doc')
     subdir ('docs')
 endif
 
-if get_option ('enable-desktop')
-    subdir ('nautilus-desktop')
-endif
-
 if get_option ('enable-nst-extension')
     subdir ('nautilus-sendto-extension')
 endif
diff --git a/meson_options.txt b/meson_options.txt
index 783061463..21bc5db45 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -7,9 +7,6 @@ option ('enable-nst-extension',
 option ('enable-selinux',
         type: 'boolean',
         value: true)
-option ('enable-desktop',
-        type: 'boolean',
-        value: true)
 option ('enable-packagekit',
         type: 'boolean',
         value: true)
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 1da446029..70a535ab4 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -13,11 +13,6 @@ eel/eel-vfs-extensions.c
 libnautilus-extension/nautilus-column.c
 libnautilus-extension/nautilus-menu-item.c
 libnautilus-extension/nautilus-property-page.c
-nautilus-desktop/nautilus-desktop-application.c
-nautilus-desktop/nautilus-desktop-directory-file.c
-nautilus-desktop/nautilus-desktop-icon-file.c
-nautilus-desktop/nautilus-desktop-link.c
-nautilus-desktop/nautilus-desktop-window.c
 nautilus-sendto-extension/nautilus-nste.c
 src/nautilus-application.c
 src/nautilus-autorun-software.c
@@ -33,7 +28,6 @@ src/nautilus-clipboard.c
 src/nautilus-column-chooser.c
 src/nautilus-column-utilities.c
 src/nautilus-compress-dialog-controller.c
-src/nautilus-desktop-item-properties.c
 src/nautilus-directory.c
 src/nautilus-dnd.c
 src/nautilus-error-reporting.c
diff --git a/src/meson.build b/src/meson.build
index aca423ac7..1847f6d48 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,4 +1,3 @@
-built_sources = []
 gdbus_sources = []
 enums = []
 
@@ -6,8 +5,6 @@ gdbus_sources += gnome.gdbus_codegen ('nautilus-freedesktop-generated',
                                       join_paths (meson.source_root (), 'data', 
'freedesktop-dbus-interfaces.xml'),
                                       interface_prefix: 'org.freedesktop',
                                       namespace: 'NautilusFreedesktop')
-# The header is used in nautilus-desktop.
-built_sources += gdbus_sources
 
 gdbus_sources += gnome.gdbus_codegen ('nautilus-generated',
                                       join_paths (meson.source_root (), 'data', 'dbus-interfaces.xml'),
@@ -36,12 +33,11 @@ resources = gnome.compile_resources ('nautilus-resources',
                                      source_dir: 'resources',
                                      c_name: 'nautilus',
                                      extra_args: '--manual-register')
-built_sources += resources[1]
 
 libnautilus_sources = [
     enums,
     gdbus_sources,
-    resources[0],
+    resources,
     'animation/egg-animation.c',
     'animation/egg-animation.h',
     'animation/egg-frame-source.c',
@@ -66,8 +62,6 @@ libnautilus_sources = [
     'nautilus-container-max-width.h',
     'nautilus-dbus-manager.c',
     'nautilus-dbus-manager.h',
-    'nautilus-desktop-item-properties.c',
-    'nautilus-desktop-item-properties.h',
     'nautilus-error-reporting.c',
     'nautilus-error-reporting.h',
     'nautilus-preferences-window.c',
@@ -295,8 +289,7 @@ libnautilus_include_dirs = include_directories ('.')
 libnautilus_dep = declare_dependency (link_with: libnautilus,
                                       include_directories: [nautilus_include_dirs,
                                                             libnautilus_include_dirs],
-                                      dependencies: nautilus_deps,
-                                      sources: built_sources)
+                                      dependencies: nautilus_deps)
 
 nautilus = executable ('nautilus',
                        'nautilus-main.c',
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index adcb7d3e7..08b8f229e 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -948,9 +948,7 @@ const GOptionEntry options[] =
     /* dummy, only for compatibility reasons */
     { "browser", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, NULL,
       NULL, NULL },
-    { "no-desktop", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, NULL,
-      NULL, NULL },
-    /* ditto */
+        /* ditto */
     { "geometry", 'g', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, NULL,
       N_("Create the initial window with the given geometry."), N_("GEOMETRY") },
     { "version", '\0', 0, G_OPTION_ARG_NONE, NULL,
diff --git a/src/nautilus-bookmark.c b/src/nautilus-bookmark.c
index 5c51fdbc0..0deb72b68 100644
--- a/src/nautilus-bookmark.c
+++ b/src/nautilus-bookmark.c
@@ -213,8 +213,7 @@ nautilus_bookmark_get_is_builtin (NautilusBookmark *bookmark)
     }
 
     /* exclude XDG locations which are not in our builtin list */
-    if (xdg_type == G_USER_DIRECTORY_DESKTOP &&
-        !g_settings_get_boolean (gnome_background_preferences, NAUTILUS_PREFERENCES_SHOW_DESKTOP))
+    if (xdg_type == G_USER_DIRECTORY_DESKTOP)
     {
         return FALSE;
     }
diff --git a/src/nautilus-canvas-container.c b/src/nautilus-canvas-container.c
index b85a2adc2..64432edf0 100644
--- a/src/nautilus-canvas-container.c
+++ b/src/nautilus-canvas-container.c
@@ -102,21 +102,6 @@
 #define LARGE_ICON_GRID_WIDTH 106
 #define LARGER_ICON_GRID_WIDTH 128
 
-/* Desktop layout mode defines */
-#define DESKTOP_PAD_HORIZONTAL  10
-#define DESKTOP_PAD_VERTICAL    10
-#define SNAP_SIZE_X             78
-#define SNAP_SIZE_Y             20
-
-#define SNAP_HORIZONTAL(func, x) ((func ((double) ((x) - DESKTOP_PAD_HORIZONTAL) / SNAP_SIZE_X) * 
SNAP_SIZE_X) + DESKTOP_PAD_HORIZONTAL)
-#define SNAP_VERTICAL(func, y) ((func ((double) ((y) - DESKTOP_PAD_VERTICAL) / SNAP_SIZE_Y) * SNAP_SIZE_Y) + 
DESKTOP_PAD_VERTICAL)
-
-#define SNAP_NEAREST_HORIZONTAL(x) SNAP_HORIZONTAL (floor, x + SNAP_SIZE_X / 2)
-#define SNAP_NEAREST_VERTICAL(y) SNAP_VERTICAL (floor, y + SNAP_SIZE_Y / 2)
-
-#define SNAP_CEIL_HORIZONTAL(x) SNAP_HORIZONTAL (ceil, x)
-#define SNAP_CEIL_VERTICAL(y) SNAP_VERTICAL (ceil, y)
-
 /* Copied from NautilusCanvasContainer */
 #define NAUTILUS_CANVAS_CONTAINER_SEARCH_DIALOG_TIMEOUT 5
 
@@ -141,8 +126,6 @@ static void          preview_selected_items (NautilusCanvasContainer *container)
 static void          activate_selected_items (NautilusCanvasContainer *container);
 static void          activate_selected_items_alternate (NautilusCanvasContainer *container,
                                                         NautilusCanvasIcon      *icon);
-static void          compute_stretch (StretchState *start,
-                                      StretchState *current);
 static NautilusCanvasIcon *get_first_selected_icon (NautilusCanvasContainer *container);
 static NautilusCanvasIcon *get_nth_selected_icon (NautilusCanvasContainer *container,
                                                   int                      index);
@@ -217,15 +200,12 @@ enum
     GET_ICON_URI,
     GET_ICON_ACTIVATION_URI,
     GET_ICON_DROP_TARGET_URI,
-    GET_STORED_ICON_POSITION,
-    ICON_POSITION_CHANGED,
     GET_STORED_LAYOUT_TIMESTAMP,
     STORE_LAYOUT_TIMESTAMP,
     ICON_RENAME_STARTED,
     ICON_RENAME_ENDED,
     ICON_STRETCH_STARTED,
     ICON_STRETCH_ENDED,
-    LAYOUT_CHANGED,
     MOVE_COPY_ITEMS,
     HANDLE_NETSCAPE_URL,
     HANDLE_URI_LIST,
@@ -274,14 +254,6 @@ icon_set_position (NautilusCanvasIcon *icon,
                    double              y)
 {
     NautilusCanvasContainer *container;
-    double pixels_per_unit;
-    int container_left, container_top, container_right, container_bottom;
-    int x1, x2, y1, y2;
-    int container_x, container_y, container_width, container_height;
-    EelDRect icon_bounds;
-    int item_width, item_height;
-    int height_above, width_left;
-    int min_x, max_x, min_y, max_y;
 
     if (icon->x == x && icon->y == y)
     {
@@ -290,56 +262,6 @@ icon_set_position (NautilusCanvasIcon *icon,
 
     container = NAUTILUS_CANVAS_CONTAINER (EEL_CANVAS_ITEM (icon->item)->canvas);
 
-    if (nautilus_canvas_container_get_is_fixed_size (container))
-    {
-        /*  FIXME: This should be:
-         *
-         *   container_x = GTK_WIDGET (container)->allocation.x;
-         *   container_y = GTK_WIDGET (container)->allocation.y;
-         *   container_width = GTK_WIDGET (container)->allocation.width;
-         *   container_height = GTK_WIDGET (container)->allocation.height;
-         *
-         *   But for some reason the widget allocation is sometimes not done
-         *   at startup, and the allocation is then only 45x60. which is
-         *   really bad.
-         *
-         *   For now, we have a cheesy workaround:
-         */
-        container_x = 0;
-        container_y = 0;
-        container_width = gdk_screen_width () - container_x
-                          - container->details->left_margin
-                          - container->details->right_margin;
-        container_height = gdk_screen_height () - container_y
-                           - container->details->top_margin
-                           - container->details->bottom_margin;
-        pixels_per_unit = EEL_CANVAS (container)->pixels_per_unit;
-        /* Clip the position of the icon within our desktop bounds */
-        container_left = container_x / pixels_per_unit;
-        container_top = container_y / pixels_per_unit;
-        container_right = container_left + container_width / pixels_per_unit;
-        container_bottom = container_top + container_height / pixels_per_unit;
-
-        icon_get_bounding_box (icon, &x1, &y1, &x2, &y2,
-                               BOUNDS_USAGE_FOR_ENTIRE_ITEM);
-        item_width = x2 - x1;
-        item_height = y2 - y1;
-
-        icon_bounds = nautilus_canvas_item_get_icon_rectangle (icon->item);
-
-        /* determine icon rectangle relative to item rectangle */
-        height_above = icon_bounds.y0 - y1;
-        width_left = icon_bounds.x0 - x1;
-
-        min_x = container_left + DESKTOP_PAD_HORIZONTAL + width_left;
-        max_x = container_right - DESKTOP_PAD_HORIZONTAL - item_width + width_left;
-        x = CLAMP (x, min_x, max_x);
-
-        min_y = container_top + height_above + DESKTOP_PAD_VERTICAL;
-        max_y = container_bottom - DESKTOP_PAD_VERTICAL - item_height + height_above;
-        y = CLAMP (y, min_y, max_y);
-    }
-
     if (icon->x == ICON_UNPOSITIONED_VALUE)
     {
         icon->x = 0;
@@ -443,36 +365,6 @@ icon_get_size (NautilusCanvasContainer *container,
     }
 }
 
-/* The icon_set_size function is used by the stretching user
- * interface, which currently stretches in a way that keeps the aspect
- * ratio. Later we might have a stretching interface that stretches Y
- * separate from X and we will change this around.
- */
-static void
-icon_set_size (NautilusCanvasContainer *container,
-               NautilusCanvasIcon      *icon,
-               guint                    icon_size,
-               gboolean                 snap,
-               gboolean                 update_position)
-{
-    guint old_size;
-    double scale;
-
-    icon_get_size (container, icon, &old_size);
-    if (icon_size == old_size)
-    {
-        return;
-    }
-
-    scale = (double) icon_size /
-            nautilus_canvas_container_get_icon_size_for_zoom_level
-                (container->details->zoom_level);
-    nautilus_canvas_container_move_icon (container, icon,
-                                         icon->x, icon->y,
-                                         scale, FALSE,
-                                         snap, update_position);
-}
-
 static void
 icon_raise (NautilusCanvasIcon *icon)
 {
@@ -485,24 +377,6 @@ icon_raise (NautilusCanvasIcon *icon)
 }
 
 static void
-emit_stretch_started (NautilusCanvasContainer *container,
-                      NautilusCanvasIcon      *icon)
-{
-    g_signal_emit (container,
-                   signals[ICON_STRETCH_STARTED], 0,
-                   icon->data);
-}
-
-static void
-emit_stretch_ended (NautilusCanvasContainer *container,
-                    NautilusCanvasIcon      *icon)
-{
-    g_signal_emit (container,
-                   signals[ICON_STRETCH_ENDED], 0,
-                   icon->data);
-}
-
-static void
 icon_toggle_selected (NautilusCanvasContainer *container,
                       NautilusCanvasIcon      *icon)
 {
@@ -521,26 +395,6 @@ icon_toggle_selected (NautilusCanvasContainer *container,
                          "highlighted_for_selection", (gboolean) icon->is_selected,
                          NULL);
 
-    /* If the icon is deselected, then get rid of the stretch handles.
-     * No harm in doing the same if the item is newly selected.
-     */
-    if (icon == container->details->stretch_icon)
-    {
-        container->details->stretch_icon = NULL;
-        nautilus_canvas_item_set_show_stretch_handles (icon->item, FALSE);
-        /* snap the icon if necessary */
-        if (container->details->keep_aligned)
-        {
-            nautilus_canvas_container_move_icon (container,
-                                                 icon,
-                                                 icon->x, icon->y,
-                                                 icon->scale,
-                                                 FALSE, TRUE, TRUE);
-        }
-
-        emit_stretch_ended (container, icon);
-    }
-
     /* Raise each newly-selected icon to the front as it is selected. */
     if (icon->is_selected)
     {
@@ -787,15 +641,9 @@ reveal_icon (NautilusCanvasContainer *container,
     hadj = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (container));
     vadj = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (container));
 
-    if (nautilus_canvas_container_is_auto_layout (container))
-    {
-        /* ensure that we reveal the entire row/column */
-        icon_get_row_and_column_bounds (container, icon, &bounds);
-    }
-    else
-    {
-        item_get_canvas_bounds (EEL_CANVAS_ITEM (icon->item), &bounds);
-    }
+    /* ensure that we reveal the entire row/column */
+    icon_get_row_and_column_bounds (container, icon, &bounds);
+
     if (bounds.y0 < gtk_adjustment_get_value (vadj))
     {
         gtk_adjustment_set_value (vadj, bounds.y0);
@@ -1182,28 +1030,8 @@ nautilus_canvas_container_update_scroll_region (NautilusCanvasContainer *contain
 
     pixels_per_unit = EEL_CANVAS (container)->pixels_per_unit;
 
-    if (nautilus_canvas_container_get_is_fixed_size (container))
-    {
-        /* Set the scroll region to the size of the container allocation */
-        gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
-        eel_canvas_set_scroll_region
-            (EEL_CANVAS (container),
-            (double) -container->details->left_margin / pixels_per_unit,
-            (double) -container->details->top_margin / pixels_per_unit,
-            ((double) (allocation.width - 1)
-             - container->details->left_margin
-             - container->details->right_margin)
-            / pixels_per_unit,
-            ((double) (allocation.height - 1)
-             - container->details->top_margin
-             - container->details->bottom_margin)
-            / pixels_per_unit);
-        return;
-    }
-
     reset_scroll_region = container->details->reset_scroll_region_trigger
-                          || nautilus_canvas_container_is_empty (container)
-                          || nautilus_canvas_container_is_auto_layout (container);
+                          || nautilus_canvas_container_is_empty (container);
 
     /* The trigger is only cleared when container is non-empty, so
      * callers can reliably reset the scroll region when an item
@@ -1219,50 +1047,16 @@ nautilus_canvas_container_update_scroll_region (NautilusCanvasContainer *contain
 
     /* Add border at the "end"of the layout (i.e. after the icons), to
      * ensure we get some space when scrolled to the end.
-     * For horizontal layouts, we add a bottom border.
-     * Vertical layout is used by the compact view so the end
-     * depends on the RTL setting.
      */
-    if (nautilus_canvas_container_is_layout_vertical (container))
-    {
-        if (nautilus_canvas_container_is_layout_rtl (container))
-        {
-            x1 -= ICON_PAD_LEFT + CONTAINER_PAD_LEFT;
-        }
-        else
-        {
-            x2 += ICON_PAD_RIGHT + CONTAINER_PAD_RIGHT;
-        }
-    }
-    else
-    {
-        y2 += ICON_PAD_BOTTOM + CONTAINER_PAD_BOTTOM;
-    }
+    y2 += ICON_PAD_BOTTOM + CONTAINER_PAD_BOTTOM;
 
     /* Auto-layout assumes a 0, 0 scroll origin and at least allocation->width.
      * Then we lay out to the right or to the left, so
      * x can be < 0 and > allocation */
-    if (nautilus_canvas_container_is_auto_layout (container))
-    {
-        gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
-        x1 = MIN (x1, 0);
-        x2 = MAX (x2, allocation.width / pixels_per_unit);
-        y1 = 0;
-    }
-    else
-    {
-        /* Otherwise we add the padding that is at the start of the
-         *  layout */
-        if (nautilus_canvas_container_is_layout_rtl (container))
-        {
-            x2 += ICON_PAD_RIGHT + CONTAINER_PAD_RIGHT;
-        }
-        else
-        {
-            x1 -= ICON_PAD_LEFT + CONTAINER_PAD_LEFT;
-        }
-        y1 -= ICON_PAD_TOP + CONTAINER_PAD_TOP;
-    }
+    gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
+    x1 = MIN (x1, 0);
+    x2 = MAX (x2, allocation.width / pixels_per_unit);
+    y1 = 0;
 
     x2 -= 1;
     x2 = MAX (x1, x2);
@@ -1541,822 +1335,178 @@ lay_down_icons_horizontal (NautilusCanvasContainer *container,
     g_array_free (positions, TRUE);
 }
 
-static void
-snap_position (NautilusCanvasContainer *container,
-               NautilusCanvasIcon      *icon,
-               int                     *x,
-               int                     *y)
-{
-    int center_x;
-    int baseline_y;
-    int icon_width;
-    int icon_height;
-    int total_width;
-    int total_height;
-    EelDRect canvas_position;
+static double
+get_mirror_x_position (NautilusCanvasContainer *container,
+                       NautilusCanvasIcon      *icon,
+                       double                   x)
+{
+    EelDRect icon_bounds;
     GtkAllocation allocation;
 
-    canvas_position = nautilus_canvas_item_get_icon_rectangle (icon->item);
-    icon_width = canvas_position.x1 - canvas_position.x0;
-    icon_height = canvas_position.y1 - canvas_position.y0;
-
     gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
-    total_width = CANVAS_WIDTH (container, allocation);
-    total_height = CANVAS_HEIGHT (container, allocation);
-
-    if (nautilus_canvas_container_is_layout_rtl (container))
-    {
-        *x = get_mirror_x_position (container, icon, *x);
-    }
-
-    if (*x + icon_width / 2 < DESKTOP_PAD_HORIZONTAL + SNAP_SIZE_X)
-    {
-        *x = DESKTOP_PAD_HORIZONTAL + SNAP_SIZE_X - icon_width / 2;
-    }
+    icon_bounds = nautilus_canvas_item_get_icon_rectangle (icon->item);
 
-    if (*x + icon_width / 2 > total_width - (DESKTOP_PAD_HORIZONTAL + SNAP_SIZE_X))
-    {
-        *x = total_width - (DESKTOP_PAD_HORIZONTAL + SNAP_SIZE_X + (icon_width / 2));
-    }
+    return CANVAS_WIDTH (container, allocation) - x - (icon_bounds.x1 - icon_bounds.x0);
+}
 
-    if (*y + icon_height < DESKTOP_PAD_VERTICAL + SNAP_SIZE_Y)
-    {
-        *y = DESKTOP_PAD_VERTICAL + SNAP_SIZE_Y - icon_height;
-    }
+static void
+nautilus_canvas_container_set_rtl_positions (NautilusCanvasContainer *container)
+{
+    GList *l;
+    NautilusCanvasIcon *icon;
+    double x;
 
-    if (*y + icon_height > total_height - (DESKTOP_PAD_VERTICAL + SNAP_SIZE_Y))
+    if (!container->details->icons)
     {
-        *y = total_height - (DESKTOP_PAD_VERTICAL + SNAP_SIZE_Y + (icon_height / 2));
+        return;
     }
 
-    center_x = *x + icon_width / 2;
-    *x = SNAP_NEAREST_HORIZONTAL (center_x) - (icon_width / 2);
-    if (nautilus_canvas_container_is_layout_rtl (container))
+    for (l = container->details->icons; l != NULL; l = l->next)
     {
-        *x = get_mirror_x_position (container, icon, *x);
+        icon = l->data;
+        x = get_mirror_x_position (container, icon, icon->saved_ltr_x);
+        icon_set_position (icon, x, icon->y);
     }
-
-
-    /* Find the grid position vertically and place on the proper baseline */
-    baseline_y = *y + icon_height;
-    baseline_y = SNAP_NEAREST_VERTICAL (baseline_y);
-    *y = baseline_y - icon_height;
 }
 
-static int
-compare_icons_by_position (gconstpointer a,
-                           gconstpointer b)
+static void
+lay_down_icons (NautilusCanvasContainer *container,
+                GList                   *icons,
+                double                   start_y)
 {
-    NautilusCanvasIcon *icon_a, *icon_b;
-    int x1, y1, x2, y2;
-    int center_a;
-    int center_b;
-
-    icon_a = (NautilusCanvasIcon *) a;
-    icon_b = (NautilusCanvasIcon *) b;
-
-    icon_get_bounding_box (icon_a, &x1, &y1, &x2, &y2,
-                           BOUNDS_USAGE_FOR_DISPLAY);
-    center_a = x1 + (x2 - x1) / 2;
-    icon_get_bounding_box (icon_b, &x1, &y1, &x2, &y2,
-                           BOUNDS_USAGE_FOR_DISPLAY);
-    center_b = x1 + (x2 - x1) / 2;
-
-    return center_a == center_b ?
-           icon_a->y - icon_b->y :
-           center_a - center_b;
+    lay_down_icons_horizontal (container, icons, start_y);
 }
 
-static PlacementGrid *
-placement_grid_new (NautilusCanvasContainer *container,
-                    gboolean                 tight)
+static void
+redo_layout_internal (NautilusCanvasContainer *container)
 {
-    PlacementGrid *grid;
-    int width, height;
-    int num_columns;
-    int num_rows;
-    int i;
-    GtkAllocation allocation;
-
-    /* Get container dimensions */
-    gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
-    width = CANVAS_WIDTH (container, allocation);
-    height = CANVAS_HEIGHT (container, allocation);
-
-    num_columns = width / SNAP_SIZE_X;
-    num_rows = height / SNAP_SIZE_Y;
+    gboolean layout_possible;
 
-    if (num_columns == 0 || num_rows == 0)
+    layout_possible = finish_adding_new_icons (container);
+    if (!layout_possible)
     {
-        return NULL;
+        schedule_redo_layout (container);
+        return;
     }
 
-    grid = g_new0 (PlacementGrid, 1);
-    grid->tight = tight;
-    grid->num_columns = num_columns;
-    grid->num_rows = num_rows;
-
-    grid->grid_memory = g_new0 (int, (num_rows * num_columns));
-    grid->icon_grid = g_new0 (int *, num_columns);
+    if (container->details->needs_resort)
+    {
+        resort (container);
+        container->details->needs_resort = FALSE;
+    }
+    lay_down_icons (container, container->details->icons, 0);
 
-    for (i = 0; i < num_columns; i++)
+    if (nautilus_canvas_container_is_layout_rtl (container))
     {
-        grid->icon_grid[i] = grid->grid_memory + (i * num_rows);
+        nautilus_canvas_container_set_rtl_positions (container);
     }
 
-    return grid;
-}
+    nautilus_canvas_container_update_scroll_region (container);
 
-static void
-placement_grid_free (PlacementGrid *grid)
-{
-    g_free (grid->icon_grid);
-    g_free (grid->grid_memory);
-    g_free (grid);
+    process_pending_icon_to_reveal (container);
+    nautilus_canvas_container_update_visible_icons (container);
 }
 
 static gboolean
-placement_grid_position_is_free (PlacementGrid *grid,
-                                 EelIRect       pos)
+redo_layout_callback (gpointer callback_data)
 {
-    int x, y;
-
-    g_assert (pos.x0 >= 0 && pos.x0 < grid->num_columns);
-    g_assert (pos.y0 >= 0 && pos.y0 < grid->num_rows);
-    g_assert (pos.x1 >= 0 && pos.x1 < grid->num_columns);
-    g_assert (pos.y1 >= 0 && pos.y1 < grid->num_rows);
+    NautilusCanvasContainer *container;
 
-    for (x = pos.x0; x <= pos.x1; x++)
-    {
-        for (y = pos.y0; y <= pos.y1; y++)
-        {
-            if (grid->icon_grid[x][y] != 0)
-            {
-                return FALSE;
-            }
-        }
-    }
+    container = NAUTILUS_CANVAS_CONTAINER (callback_data);
+    redo_layout_internal (container);
+    container->details->idle_id = 0;
 
-    return TRUE;
+    return FALSE;
 }
 
 static void
-placement_grid_mark (PlacementGrid *grid,
-                     EelIRect       pos)
+unschedule_redo_layout (NautilusCanvasContainer *container)
 {
-    int x, y;
-
-    g_assert (pos.x0 >= 0 && pos.x0 < grid->num_columns);
-    g_assert (pos.y0 >= 0 && pos.y0 < grid->num_rows);
-    g_assert (pos.x1 >= 0 && pos.x1 < grid->num_columns);
-    g_assert (pos.y1 >= 0 && pos.y1 < grid->num_rows);
-
-    for (x = pos.x0; x <= pos.x1; x++)
+    if (container->details->idle_id != 0)
     {
-        for (y = pos.y0; y <= pos.y1; y++)
-        {
-            grid->icon_grid[x][y] = 1;
-        }
+        g_source_remove (container->details->idle_id);
+        container->details->idle_id = 0;
     }
 }
 
 static void
-canvas_position_to_grid_position (PlacementGrid *grid,
-                                  EelIRect       canvas_position,
-                                  EelIRect      *grid_position)
+schedule_redo_layout (NautilusCanvasContainer *container)
 {
-    /* The first causes minimal moving around during a snap, but
-     * can end up with partially overlapping icons.  The second one won't
-     * allow any overlapping, but can cause more movement to happen
-     * during a snap. */
-    if (grid->tight)
-    {
-        grid_position->x0 = ceil ((double) (canvas_position.x0 - DESKTOP_PAD_HORIZONTAL) / SNAP_SIZE_X);
-        grid_position->y0 = ceil ((double) (canvas_position.y0 - DESKTOP_PAD_VERTICAL) / SNAP_SIZE_Y);
-        grid_position->x1 = floor ((double) (canvas_position.x1 - DESKTOP_PAD_HORIZONTAL) / SNAP_SIZE_X);
-        grid_position->y1 = floor ((double) (canvas_position.y1 - DESKTOP_PAD_VERTICAL) / SNAP_SIZE_Y);
-    }
-    else
+    if (container->details->idle_id == 0
+        && container->details->has_been_allocated)
     {
-        grid_position->x0 = floor ((double) (canvas_position.x0 - DESKTOP_PAD_HORIZONTAL) / SNAP_SIZE_X);
-        grid_position->y0 = floor ((double) (canvas_position.y0 - DESKTOP_PAD_VERTICAL) / SNAP_SIZE_Y);
-        grid_position->x1 = floor ((double) (canvas_position.x1 - DESKTOP_PAD_HORIZONTAL) / SNAP_SIZE_X);
-        grid_position->y1 = floor ((double) (canvas_position.y1 - DESKTOP_PAD_VERTICAL) / SNAP_SIZE_Y);
+        container->details->idle_id = g_idle_add
+                                          (redo_layout_callback, container);
     }
-
-    grid_position->x0 = CLAMP (grid_position->x0, 0, grid->num_columns - 1);
-    grid_position->y0 = CLAMP (grid_position->y0, 0, grid->num_rows - 1);
-    grid_position->x1 = CLAMP (grid_position->x1, grid_position->x0, grid->num_columns - 1);
-    grid_position->y1 = CLAMP (grid_position->y1, grid_position->y0, grid->num_rows - 1);
 }
 
 static void
-placement_grid_mark_icon (PlacementGrid      *grid,
-                          NautilusCanvasIcon *icon)
+redo_layout (NautilusCanvasContainer *container)
 {
-    EelIRect canvas_pos;
-    EelIRect grid_pos;
-
-    icon_get_bounding_box (icon,
-                           &canvas_pos.x0, &canvas_pos.y0,
-                           &canvas_pos.x1, &canvas_pos.y1,
-                           BOUNDS_USAGE_FOR_LAYOUT);
-    canvas_position_to_grid_position (grid,
-                                      canvas_pos,
-                                      &grid_pos);
-    placement_grid_mark (grid, grid_pos);
+    unschedule_redo_layout (container);
+    /* We can't lay out if the size hasn't been allocated yet; wait for it to
+     * be and then we will be called again from size_allocate ()
+     */
+    if (container->details->has_been_allocated)
+    {
+        redo_layout_internal (container);
+    }
 }
 
-static void
-find_empty_location (NautilusCanvasContainer *container,
-                     PlacementGrid           *grid,
-                     NautilusCanvasIcon      *icon,
-                     int                      start_x,
-                     int                      start_y,
-                     int                     *x,
-                     int                     *y)
-{
-    double icon_width, icon_height;
-    int canvas_width;
-    int canvas_height;
-    int height_for_bound_check;
-    EelIRect icon_position;
-    EelDRect pixbuf_rect;
-    gboolean collision;
-    GtkAllocation allocation;
+/* Container-level icon handling functions.  */
 
-    /* Get container dimensions */
-    gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
-    canvas_width = CANVAS_WIDTH (container, allocation);
-    canvas_height = CANVAS_HEIGHT (container, allocation);
+static gboolean
+button_event_modifies_selection (GdkEventButton *event)
+{
+    return (event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) != 0;
+}
 
-    icon_get_bounding_box (icon,
-                           &icon_position.x0, &icon_position.y0,
-                           &icon_position.x1, &icon_position.y1,
-                           BOUNDS_USAGE_FOR_LAYOUT);
-    icon_width = icon_position.x1 - icon_position.x0;
-    icon_height = icon_position.y1 - icon_position.y0;
+/* invalidate the cached label sizes for all the icons */
+static void
+invalidate_label_sizes (NautilusCanvasContainer *container)
+{
+    GList *p;
+    NautilusCanvasIcon *icon;
 
-    icon_get_bounding_box (icon,
-                           NULL, &icon_position.y0,
-                           NULL, &icon_position.y1,
-                           BOUNDS_USAGE_FOR_ENTIRE_ITEM);
-    height_for_bound_check = icon_position.y1 - icon_position.y0;
+    for (p = container->details->icons; p != NULL; p = p->next)
+    {
+        icon = p->data;
 
-    pixbuf_rect = nautilus_canvas_item_get_icon_rectangle (icon->item);
+        nautilus_canvas_item_invalidate_label_size (icon->item);
+    }
+}
 
-    /* Start the icon on a grid location */
-    snap_position (container, icon, &start_x, &start_y);
+static gboolean
+select_range (NautilusCanvasContainer *container,
+              NautilusCanvasIcon      *icon1,
+              NautilusCanvasIcon      *icon2,
+              gboolean                 unselect_outside_range)
+{
+    gboolean selection_changed;
+    GList *p;
+    NautilusCanvasIcon *icon;
+    NautilusCanvasIcon *unmatched_icon;
+    gboolean select;
 
-    icon_position.x0 = start_x;
-    icon_position.y0 = start_y;
-    icon_position.x1 = icon_position.x0 + icon_width;
-    icon_position.y1 = icon_position.y0 + icon_height;
+    selection_changed = FALSE;
 
-    do
+    unmatched_icon = NULL;
+    select = FALSE;
+    for (p = container->details->icons; p != NULL; p = p->next)
     {
-        EelIRect grid_position;
-        gboolean need_new_column;
-
-        collision = FALSE;
-
-        canvas_position_to_grid_position (grid,
-                                          icon_position,
-                                          &grid_position);
-
-        need_new_column = icon_position.y0 + height_for_bound_check + DESKTOP_PAD_VERTICAL > canvas_height;
+        icon = p->data;
 
-        if (need_new_column ||
-            !placement_grid_position_is_free (grid, grid_position))
+        if (unmatched_icon == NULL)
         {
-            icon_position.y0 += SNAP_SIZE_Y;
-            icon_position.y1 = icon_position.y0 + icon_height;
-
-            if (need_new_column)
+            if (icon == icon1)
             {
-                /* Move to the next column */
-                icon_position.y0 = DESKTOP_PAD_VERTICAL + SNAP_SIZE_Y - (pixbuf_rect.y1 - pixbuf_rect.y0);
-                while (icon_position.y0 < DESKTOP_PAD_VERTICAL)
-                {
-                    icon_position.y0 += SNAP_SIZE_Y;
-                }
-                icon_position.y1 = icon_position.y0 + icon_height;
-
-                icon_position.x0 += SNAP_SIZE_X;
-                icon_position.x1 = icon_position.x0 + icon_width;
-            }
-
-            collision = TRUE;
-        }
-    }
-    while (collision && (icon_position.x1 < canvas_width));
-
-    *x = icon_position.x0;
-    *y = icon_position.y0;
-}
-
-static void
-align_icons (NautilusCanvasContainer *container)
-{
-    GList *unplaced_icons;
-    GList *l;
-    PlacementGrid *grid;
-
-    unplaced_icons = g_list_copy (container->details->icons);
-
-    unplaced_icons = g_list_sort (unplaced_icons,
-                                  compare_icons_by_position);
-
-    if (nautilus_canvas_container_is_layout_rtl (container))
-    {
-        unplaced_icons = g_list_reverse (unplaced_icons);
-    }
-
-    grid = placement_grid_new (container, TRUE);
-
-    if (!grid)
-    {
-        return;
-    }
-
-    for (l = unplaced_icons; l != NULL; l = l->next)
-    {
-        NautilusCanvasIcon *icon;
-        int x, y;
-
-        icon = l->data;
-        x = icon->saved_ltr_x;
-        y = icon->y;
-        find_empty_location (container, grid,
-                             icon, x, y, &x, &y);
-
-        icon_set_position (icon, x, y);
-        icon->saved_ltr_x = icon->x;
-        placement_grid_mark_icon (grid, icon);
-    }
-
-    g_list_free (unplaced_icons);
-
-    placement_grid_free (grid);
-
-    if (nautilus_canvas_container_is_layout_rtl (container))
-    {
-        nautilus_canvas_container_set_rtl_positions (container);
-    }
-}
-
-static double
-get_mirror_x_position (NautilusCanvasContainer *container,
-                       NautilusCanvasIcon      *icon,
-                       double                   x)
-{
-    EelDRect icon_bounds;
-    GtkAllocation allocation;
-
-    gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
-    icon_bounds = nautilus_canvas_item_get_icon_rectangle (icon->item);
-
-    return CANVAS_WIDTH (container, allocation) - x - (icon_bounds.x1 - icon_bounds.x0);
-}
-
-static void
-nautilus_canvas_container_set_rtl_positions (NautilusCanvasContainer *container)
-{
-    GList *l;
-    NautilusCanvasIcon *icon;
-    double x;
-
-    if (!container->details->icons)
-    {
-        return;
-    }
-
-    for (l = container->details->icons; l != NULL; l = l->next)
-    {
-        icon = l->data;
-        x = get_mirror_x_position (container, icon, icon->saved_ltr_x);
-        icon_set_position (icon, x, icon->y);
-    }
-}
-
-static void
-lay_down_icons_vertical_desktop (NautilusCanvasContainer *container,
-                                 GList                   *icons)
-{
-    GList *p, *placed_icons, *unplaced_icons;
-    int total, new_length, placed;
-    NautilusCanvasIcon *icon;
-    int height, max_width, column_width, icon_width, icon_height;
-    int x, y, x1, x2, y1, y2;
-    EelDRect icon_rect;
-    GtkAllocation allocation;
-
-    /* We can't get the right allocation if the size hasn't been allocated yet */
-    g_return_if_fail (container->details->has_been_allocated);
-
-    /* Get container dimensions */
-    gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
-    height = CANVAS_HEIGHT (container, allocation);
-
-    /* Determine which icons have and have not been placed */
-    placed_icons = NULL;
-    unplaced_icons = NULL;
-
-    total = g_list_length (container->details->icons);
-    new_length = g_list_length (icons);
-    placed = total - new_length;
-    if (placed > 0)
-    {
-        PlacementGrid *grid;
-        /* Add only placed icons in list */
-        for (p = container->details->icons; p != NULL; p = p->next)
-        {
-            icon = p->data;
-            if (icon_is_positioned (icon))
-            {
-                icon_set_position (icon, icon->saved_ltr_x, icon->y);
-                placed_icons = g_list_prepend (placed_icons, icon);
-            }
-            else
-            {
-                icon->x = 0;
-                icon->y = 0;
-                unplaced_icons = g_list_prepend (unplaced_icons, icon);
-            }
-        }
-        placed_icons = g_list_reverse (placed_icons);
-        unplaced_icons = g_list_reverse (unplaced_icons);
-
-        grid = placement_grid_new (container, FALSE);
-
-        if (grid)
-        {
-            for (p = placed_icons; p != NULL; p = p->next)
-            {
-                placement_grid_mark_icon
-                    (grid, (NautilusCanvasIcon *) p->data);
-            }
-
-            /* Place unplaced icons in the best locations */
-            for (p = unplaced_icons; p != NULL; p = p->next)
-            {
-                icon = p->data;
-
-                icon_rect = nautilus_canvas_item_get_icon_rectangle (icon->item);
-
-                /* Start the icon in the first column */
-                x = DESKTOP_PAD_HORIZONTAL + (SNAP_SIZE_X / 2) - ((icon_rect.x1 - icon_rect.x0) / 2);
-                y = DESKTOP_PAD_VERTICAL + SNAP_SIZE_Y - (icon_rect.y1 - icon_rect.y0);
-
-                find_empty_location (container,
-                                     grid,
-                                     icon,
-                                     x, y,
-                                     &x, &y);
-
-                icon_set_position (icon, x, y);
-                icon->saved_ltr_x = x;
-                placement_grid_mark_icon (grid, icon);
-            }
-
-            placement_grid_free (grid);
-        }
-
-        g_list_free (placed_icons);
-        g_list_free (unplaced_icons);
-    }
-    else
-    {
-        /* There are no placed icons.  Just lay them down using our rules */
-        x = DESKTOP_PAD_HORIZONTAL;
-
-        while (icons != NULL)
-        {
-            int center_x;
-            int baseline;
-            int icon_height_for_bound_check;
-            gboolean should_snap;
-
-            should_snap = container->details->keep_aligned;
-
-            y = DESKTOP_PAD_VERTICAL;
-
-            max_width = 0;
-
-            /* Calculate max width for column */
-            for (p = icons; p != NULL; p = p->next)
-            {
-                icon = p->data;
-
-                icon_get_bounding_box (icon, &x1, &y1, &x2, &y2,
-                                       BOUNDS_USAGE_FOR_LAYOUT);
-                icon_width = x2 - x1;
-                icon_height = y2 - y1;
-
-                icon_get_bounding_box (icon, NULL, &y1, NULL, &y2,
-                                       BOUNDS_USAGE_FOR_ENTIRE_ITEM);
-                icon_height_for_bound_check = y2 - y1;
-
-                if (should_snap)
-                {
-                    /* Snap the baseline to a grid position */
-                    icon_rect = nautilus_canvas_item_get_icon_rectangle (icon->item);
-                    baseline = y + (icon_rect.y1 - icon_rect.y0);
-                    baseline = SNAP_CEIL_VERTICAL (baseline);
-                    y = baseline - (icon_rect.y1 - icon_rect.y0);
-                }
-
-                /* Check and see if we need to move to a new column */
-                if (y != DESKTOP_PAD_VERTICAL && y + icon_height_for_bound_check > height)
-                {
-                    break;
-                }
-
-                if (max_width < icon_width)
-                {
-                    max_width = icon_width;
-                }
-
-                y += icon_height + DESKTOP_PAD_VERTICAL;
-            }
-
-            y = DESKTOP_PAD_VERTICAL;
-
-            center_x = x + max_width / 2;
-            column_width = max_width;
-            if (should_snap)
-            {
-                /* Find the grid column to center on */
-                center_x = SNAP_CEIL_HORIZONTAL (center_x);
-                column_width = (center_x - x) + (max_width / 2);
-            }
-
-            /* Lay out column */
-            for (p = icons; p != NULL; p = p->next)
-            {
-                icon = p->data;
-                icon_get_bounding_box (icon, &x1, &y1, &x2, &y2,
-                                       BOUNDS_USAGE_FOR_LAYOUT);
-                icon_height = y2 - y1;
-
-                icon_get_bounding_box (icon, NULL, &y1, NULL, &y2,
-                                       BOUNDS_USAGE_FOR_ENTIRE_ITEM);
-                icon_height_for_bound_check = y2 - y1;
-
-                icon_rect = nautilus_canvas_item_get_icon_rectangle (icon->item);
-
-                if (should_snap)
-                {
-                    baseline = y + (icon_rect.y1 - icon_rect.y0);
-                    baseline = SNAP_CEIL_VERTICAL (baseline);
-                    y = baseline - (icon_rect.y1 - icon_rect.y0);
-                }
-
-                /* Check and see if we need to move to a new column */
-                if (y != DESKTOP_PAD_VERTICAL && y > height - icon_height_for_bound_check &&
-                    /* Make sure we lay out at least one icon per column, to make progress */
-                    p != icons)
-                {
-                    x += column_width + DESKTOP_PAD_HORIZONTAL;
-                    break;
-                }
-
-                icon_set_position (icon,
-                                   center_x - (icon_rect.x1 - icon_rect.x0) / 2,
-                                   y);
-
-                icon->saved_ltr_x = icon->x;
-                y += icon_height + DESKTOP_PAD_VERTICAL;
-            }
-            icons = p;
-        }
-    }
-
-    /* These modes are special. We freeze all of our positions
-     * after we do the layout.
-     */
-    /* FIXME bugzilla.gnome.org 42478:
-     * This should not be tied to the direction of layout.
-     * It should be a separate switch.
-     */
-    nautilus_canvas_container_freeze_icon_positions (container);
-}
-
-static void
-lay_down_icons (NautilusCanvasContainer *container,
-                GList                   *icons,
-                double                   start_y)
-{
-    if (container->details->is_desktop)
-    {
-        lay_down_icons_vertical_desktop (container, icons);
-    }
-    else
-    {
-        lay_down_icons_horizontal (container, icons, start_y);
-    }
-}
-
-static void
-redo_layout_internal (NautilusCanvasContainer *container)
-{
-    gboolean layout_possible;
-
-    layout_possible = finish_adding_new_icons (container);
-    if (!layout_possible)
-    {
-        schedule_redo_layout (container);
-        return;
-    }
-
-    /* Don't do any re-laying-out during stretching. Later we
-     * might add smart logic that does this and leaves room for
-     * the stretched icon, but if we do it we want it to be fast
-     * and only re-lay-out when it's really needed.
-     */
-    if (container->details->auto_layout
-        && container->details->drag_state != DRAG_STATE_STRETCH)
-    {
-        if (container->details->needs_resort)
-        {
-            resort (container);
-            container->details->needs_resort = FALSE;
-        }
-        lay_down_icons (container, container->details->icons, 0);
-    }
-
-    if (nautilus_canvas_container_is_layout_rtl (container))
-    {
-        nautilus_canvas_container_set_rtl_positions (container);
-    }
-
-    nautilus_canvas_container_update_scroll_region (container);
-
-    process_pending_icon_to_reveal (container);
-    nautilus_canvas_container_update_visible_icons (container);
-}
-
-static gboolean
-redo_layout_callback (gpointer callback_data)
-{
-    NautilusCanvasContainer *container;
-
-    container = NAUTILUS_CANVAS_CONTAINER (callback_data);
-    redo_layout_internal (container);
-    container->details->idle_id = 0;
-
-    return FALSE;
-}
-
-static void
-unschedule_redo_layout (NautilusCanvasContainer *container)
-{
-    if (container->details->idle_id != 0)
-    {
-        g_source_remove (container->details->idle_id);
-        container->details->idle_id = 0;
-    }
-}
-
-static void
-schedule_redo_layout (NautilusCanvasContainer *container)
-{
-    if (container->details->idle_id == 0
-        && container->details->has_been_allocated)
-    {
-        container->details->idle_id = g_idle_add
-                                          (redo_layout_callback, container);
-    }
-}
-
-static void
-redo_layout (NautilusCanvasContainer *container)
-{
-    unschedule_redo_layout (container);
-    /* We can't lay out if the size hasn't been allocated yet; wait for it to
-     * be and then we will be called again from size_allocate ()
-     */
-    if (container->details->has_been_allocated)
-    {
-        redo_layout_internal (container);
-    }
-}
-
-static void
-reload_icon_positions (NautilusCanvasContainer *container)
-{
-    GList *p, *no_position_icons;
-    NautilusCanvasIcon *icon;
-    gboolean have_stored_position;
-    NautilusCanvasPosition position;
-    EelDRect bounds;
-    double bottom;
-    EelCanvasItem *item;
-
-    g_assert (!container->details->auto_layout);
-
-    resort (container);
-
-    no_position_icons = NULL;
-
-    /* Place all the icons with positions. */
-    bottom = 0;
-    for (p = container->details->icons; p != NULL; p = p->next)
-    {
-        icon = p->data;
-
-        have_stored_position = FALSE;
-        g_signal_emit (container,
-                       signals[GET_STORED_ICON_POSITION], 0,
-                       icon->data,
-                       &position,
-                       &have_stored_position);
-        if (have_stored_position)
-        {
-            icon_set_position (icon, position.x, position.y);
-            item = EEL_CANVAS_ITEM (icon->item);
-            nautilus_canvas_item_get_bounds_for_layout (icon->item,
-                                                        &bounds.x0,
-                                                        &bounds.y0,
-                                                        &bounds.x1,
-                                                        &bounds.y1);
-            eel_canvas_item_i2w (item->parent,
-                                 &bounds.x0,
-                                 &bounds.y0);
-            eel_canvas_item_i2w (item->parent,
-                                 &bounds.x1,
-                                 &bounds.y1);
-            if (bounds.y1 > bottom)
-            {
-                bottom = bounds.y1;
-            }
-        }
-        else
-        {
-            no_position_icons = g_list_prepend (no_position_icons, icon);
-        }
-    }
-    no_position_icons = g_list_reverse (no_position_icons);
-
-    /* Place all the other icons. */
-    lay_down_icons (container, no_position_icons, bottom + ICON_PAD_BOTTOM);
-    g_list_free (no_position_icons);
-}
-
-/* Container-level icon handling functions.  */
-
-static gboolean
-button_event_modifies_selection (GdkEventButton *event)
-{
-    return (event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) != 0;
-}
-
-/* invalidate the cached label sizes for all the icons */
-static void
-invalidate_label_sizes (NautilusCanvasContainer *container)
-{
-    GList *p;
-    NautilusCanvasIcon *icon;
-
-    for (p = container->details->icons; p != NULL; p = p->next)
-    {
-        icon = p->data;
-
-        nautilus_canvas_item_invalidate_label_size (icon->item);
-    }
-}
-
-static gboolean
-select_range (NautilusCanvasContainer *container,
-              NautilusCanvasIcon      *icon1,
-              NautilusCanvasIcon      *icon2,
-              gboolean                 unselect_outside_range)
-{
-    gboolean selection_changed;
-    GList *p;
-    NautilusCanvasIcon *icon;
-    NautilusCanvasIcon *unmatched_icon;
-    gboolean select;
-
-    selection_changed = FALSE;
-
-    unmatched_icon = NULL;
-    select = FALSE;
-    for (p = container->details->icons; p != NULL; p = p->next)
-    {
-        icon = p->data;
-
-        if (unmatched_icon == NULL)
-        {
-            if (icon == icon1)
-            {
-                unmatched_icon = icon2;
-                select = TRUE;
-            }
-            else if (icon == icon2)
-            {
-                unmatched_icon = icon1;
-                select = TRUE;
+                unmatched_icon = icon2;
+                select = TRUE;
+            }
+            else if (icon == icon2)
+            {
+                unmatched_icon = icon1;
+                select = TRUE;
             }
         }
 
@@ -2406,75 +1556,6 @@ unselect_all (NautilusCanvasContainer *container)
     return select_one_unselect_others (container, NULL);
 }
 
-void
-nautilus_canvas_container_move_icon (NautilusCanvasContainer *container,
-                                     NautilusCanvasIcon      *icon,
-                                     int                      x,
-                                     int                      y,
-                                     double                   scale,
-                                     gboolean                 raise,
-                                     gboolean                 snap,
-                                     gboolean                 update_position)
-{
-    NautilusCanvasContainerDetails *details;
-    gboolean emit_signal;
-    NautilusCanvasPosition position;
-
-    details = container->details;
-
-    emit_signal = FALSE;
-
-    if (scale != icon->scale)
-    {
-        icon->scale = scale;
-        nautilus_canvas_container_update_icon (container, icon);
-        if (update_position)
-        {
-            redo_layout (container);
-            emit_signal = TRUE;
-        }
-    }
-
-    if (!details->auto_layout)
-    {
-        if (details->keep_aligned && snap)
-        {
-            snap_position (container, icon, &x, &y);
-        }
-
-        if (x != icon->x || y != icon->y)
-        {
-            icon_set_position (icon, x, y);
-            emit_signal = update_position;
-        }
-
-        icon->saved_ltr_x = nautilus_canvas_container_is_layout_rtl (container) ? get_mirror_x_position 
(container, icon, icon->x) : icon->x;
-    }
-
-    if (emit_signal)
-    {
-        position.x = icon->saved_ltr_x;
-        position.y = icon->y;
-        position.scale = scale;
-        g_signal_emit (container,
-                       signals[ICON_POSITION_CHANGED], 0,
-                       icon->data, &position);
-    }
-
-    if (raise)
-    {
-        icon_raise (icon);
-    }
-
-    /* FIXME bugzilla.gnome.org 42474:
-     * Handling of the scroll region is inconsistent here. In
-     * the scale-changing case, redo_layout is called, which updates the
-     * scroll region appropriately. In other cases, it's up to the
-     * caller to make sure the scroll region is updated. This could
-     * lead to hard-to-track-down bugs.
-     */
-}
-
 /* Implementation of rubberband selection.  */
 static void
 rubberband_select (NautilusCanvasContainer *container,
@@ -2668,76 +1749,16 @@ get_rubber_color (NautilusCanvasContainer *container,
                   GdkRGBA                 *bgcolor,
                   GdkRGBA                 *bordercolor)
 {
-    Atom real_type;
-    gint result = -1;
-    gint real_format;
-    gulong items_read = 0;
-    gulong items_left = 0;
-    gchar *colors;
-    Atom representative_colors_atom;
-    Display *display;
-
-    if (nautilus_canvas_container_get_is_desktop (container))
-    {
-        representative_colors_atom = gdk_x11_get_xatom_by_name ("_GNOME_BACKGROUND_REPRESENTATIVE_COLORS");
-        display = gdk_x11_display_get_xdisplay (gdk_display_get_default ());
-
-        gdk_error_trap_push ();
-        result = XGetWindowProperty (display,
-                                     GDK_ROOT_WINDOW (),
-                                     representative_colors_atom,
-                                     0L,
-                                     G_MAXLONG,
-                                     False,
-                                     XA_STRING,
-                                     &real_type,
-                                     &real_format,
-                                     &items_read,
-                                     &items_left,
-                                     (guchar **) &colors);
-        gdk_error_trap_pop_ignored ();
-    }
-
-    if (result == Success && items_read)
-    {
-        /* by treating the result as a nul-terminated string, we
-         * select the first colour in the list.
-         */
-        GdkRGBA read;
-        gdouble shade;
-
-        gdk_rgba_parse (&read, colors);
-        XFree (colors);
+    GtkStyleContext *context;
 
-        /* Border
-         *
-         * We shade darker colours to be slightly lighter and
-         * lighter ones to be slightly darker.
-         */
-        shade = read.green < 0.5 ? 1.1 : 0.9;
-        bordercolor->red = read.red * shade;
-        bordercolor->green = read.green * shade;
-        bordercolor->blue = read.blue * shade;
-        bordercolor->alpha = 1.0;
-
-        /* Background */
-        *bgcolor = read;
-        bgcolor->alpha = 0.6;
-    }
-    else
-    {
-        /* Fallback to the style context if we can't get the Atom */
-        GtkStyleContext *context;
+    context = gtk_widget_get_style_context (GTK_WIDGET (container));
+    gtk_style_context_save (context);
+    gtk_style_context_add_class (context, GTK_STYLE_CLASS_RUBBERBAND);
 
-        context = gtk_widget_get_style_context (GTK_WIDGET (container));
-        gtk_style_context_save (context);
-        gtk_style_context_add_class (context, GTK_STYLE_CLASS_RUBBERBAND);
+    gtk_style_context_get_background_color (context, GTK_STATE_FLAG_NORMAL, bgcolor);
+    gtk_style_context_get_border_color (context, GTK_STATE_FLAG_NORMAL, bordercolor);
 
-        gtk_style_context_get_background_color (context, GTK_STATE_FLAG_NORMAL, bgcolor);
-        gtk_style_context_get_border_color (context, GTK_STATE_FLAG_NORMAL, bordercolor);
-
-        gtk_style_context_restore (context);
-    }
+    gtk_style_context_restore (context);
 }
 
 static void
@@ -3339,40 +2360,6 @@ next_row_rightmost (NautilusCanvasContainer *container,
 }
 
 static gboolean
-next_column_bottommost (NautilusCanvasContainer *container,
-                        NautilusCanvasIcon      *start_icon,
-                        NautilusCanvasIcon      *best_so_far,
-                        NautilusCanvasIcon      *candidate,
-                        void                    *data)
-{
-    /* sort out icons that are not on the right of the current column */
-    if (compare_with_start_column (container, candidate) >= 0)
-    {
-        return FALSE;
-    }
-
-    if (best_so_far != NULL)
-    {
-        if (compare_icons_horizontal_first (container,
-                                            best_so_far,
-                                            candidate) > 0)
-        {
-            /* candidate is above best choice, but below the current row */
-            return TRUE;
-        }
-
-        if (compare_icons_vertical_first (container,
-                                          best_so_far,
-                                          candidate) < 0)
-        {
-            return TRUE;
-        }
-    }
-
-    return best_so_far == NULL;
-}
-
-static gboolean
 previous_row_rightmost (NautilusCanvasContainer *container,
                         NautilusCanvasIcon      *start_icon,
                         NautilusCanvasIcon      *best_so_far,
@@ -3430,167 +2417,50 @@ same_column_above_lowest (NautilusCanvasContainer *container,
         }
     }
 
-    /* Candidates below the start do not qualify. */
-    if (compare_icons_vertical_first (container,
-                                      candidate,
-                                      start_icon) >= 0)
-    {
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
-static gboolean
-same_column_below_highest (NautilusCanvasContainer *container,
-                           NautilusCanvasIcon      *start_icon,
-                           NautilusCanvasIcon      *best_so_far,
-                           NautilusCanvasIcon      *candidate,
-                           void                    *data)
-{
-    /* Candidates not on the start column do not qualify. */
-    if (compare_with_start_column (container, candidate) != 0)
-    {
-        return FALSE;
-    }
-
-    /* Candidates that are lower lose out. */
-    if (best_so_far != NULL)
-    {
-        if (compare_icons_vertical_first (container,
-                                          best_so_far,
-                                          candidate) < 0)
-        {
-            return FALSE;
-        }
-    }
-
-    /* Candidates above the start do not qualify. */
-    if (compare_icons_vertical_first (container,
-                                      candidate,
-                                      start_icon) <= 0)
-    {
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
-static gboolean
-previous_column_highest (NautilusCanvasContainer *container,
-                         NautilusCanvasIcon      *start_icon,
-                         NautilusCanvasIcon      *best_so_far,
-                         NautilusCanvasIcon      *candidate,
-                         void                    *data)
-{
-    /* sort out icons that are not before the current column */
-    if (compare_with_start_column (container, candidate) <= 0)
-    {
-        return FALSE;
-    }
-
-    if (best_so_far != NULL)
-    {
-        if (compare_icons_horizontal (container,
-                                      best_so_far,
-                                      candidate) < 0)
-        {
-            /* candidate is right of the best choice, but left of the current column */
-            return TRUE;
-        }
-
-        if (compare_icons_vertical (container,
-                                    best_so_far,
-                                    candidate) > 0)
-        {
-            return TRUE;
-        }
-    }
-
-    return best_so_far == NULL;
-}
-
-
-static gboolean
-next_column_highest (NautilusCanvasContainer *container,
-                     NautilusCanvasIcon      *start_icon,
-                     NautilusCanvasIcon      *best_so_far,
-                     NautilusCanvasIcon      *candidate,
-                     void                    *data)
-{
-    /* sort out icons that are not after the current column */
-    if (compare_with_start_column (container, candidate) >= 0)
-    {
-        return FALSE;
-    }
-
-    if (best_so_far != NULL)
-    {
-        if (compare_icons_horizontal_first (container,
-                                            best_so_far,
-                                            candidate) > 0)
-        {
-            /* candidate is left of the best choice, but right of the current column */
-            return TRUE;
-        }
-
-        if (compare_icons_vertical_first (container,
-                                          best_so_far,
-                                          candidate) > 0)
-        {
-            return TRUE;
-        }
-    }
-
-    return best_so_far == NULL;
+    /* Candidates below the start do not qualify. */
+    if (compare_icons_vertical_first (container,
+                                      candidate,
+                                      start_icon) >= 0)
+    {
+        return FALSE;
+    }
+
+    return TRUE;
 }
 
 static gboolean
-previous_column_lowest (NautilusCanvasContainer *container,
-                        NautilusCanvasIcon      *start_icon,
-                        NautilusCanvasIcon      *best_so_far,
-                        NautilusCanvasIcon      *candidate,
-                        void                    *data)
+same_column_below_highest (NautilusCanvasContainer *container,
+                           NautilusCanvasIcon      *start_icon,
+                           NautilusCanvasIcon      *best_so_far,
+                           NautilusCanvasIcon      *candidate,
+                           void                    *data)
 {
-    /* sort out icons that are not before the current column */
-    if (compare_with_start_column (container, candidate) <= 0)
+    /* Candidates not on the start column do not qualify. */
+    if (compare_with_start_column (container, candidate) != 0)
     {
         return FALSE;
     }
 
+    /* Candidates that are lower lose out. */
     if (best_so_far != NULL)
     {
-        if (compare_icons_horizontal_first (container,
-                                            best_so_far,
-                                            candidate) < 0)
-        {
-            /* candidate is right of the best choice, but left of the current column */
-            return TRUE;
-        }
-
         if (compare_icons_vertical_first (container,
                                           best_so_far,
                                           candidate) < 0)
         {
-            return TRUE;
+            return FALSE;
         }
     }
 
-    return best_so_far == NULL;
-}
-
-static gboolean
-last_column_lowest (NautilusCanvasContainer *container,
-                    NautilusCanvasIcon      *start_icon,
-                    NautilusCanvasIcon      *best_so_far,
-                    NautilusCanvasIcon      *candidate,
-                    void                    *data)
-{
-    if (best_so_far == NULL)
+    /* Candidates above the start do not qualify. */
+    if (compare_icons_vertical_first (container,
+                                      candidate,
+                                      start_icon) <= 0)
     {
-        return TRUE;
+        return FALSE;
     }
-    return compare_icons_horizontal_first (container, best_so_far, candidate) < 0;
+
+    return TRUE;
 }
 
 static gboolean
@@ -3725,8 +2595,7 @@ keyboard_move_to (NautilusCanvasContainer *container,
         clear_keyboard_rubberband_start (container);
     }
     else if (event != NULL &&
-             ((event->state & GDK_CONTROL_MASK) != 0 ||
-              !container->details->auto_layout) &&
+             (event->state & GDK_CONTROL_MASK) != 0 &&
              (event->state & GDK_SHIFT_MASK) != 0)
     {
         /* Do rubberband selection */
@@ -3811,11 +2680,7 @@ keyboard_end (NautilusCanvasContainer *container,
     from = find_best_selected_icon (container, NULL,
                                     leftmost_in_top_row,
                                     NULL);
-    to = find_best_icon (container, NULL,
-                         nautilus_canvas_container_is_layout_vertical (container) ?
-                         last_column_lowest :
-                         rightmost_in_bottom_row,
-                         NULL);
+    to = find_best_icon (container, NULL, rightmost_in_bottom_row, NULL);
 
     keyboard_move_to (container, to, from, event);
 }
@@ -3898,7 +2763,7 @@ keyboard_arrow_key (NautilusCanvasContainer *container,
 
         to = find_best_icon
                  (container, from,
-                 container->details->auto_layout ? better_destination : better_destination_manual,
+                 better_destination,
                  &data);
 
         /* Wrap around to next/previous row/column */
@@ -3929,7 +2794,6 @@ keyboard_arrow_key (NautilusCanvasContainer *container,
          * Should select 4.
          */
         if (to == NULL &&
-            container->details->auto_layout &&
             better_destination_fallback_fallback != NULL)
         {
             to = find_best_icon
@@ -3959,23 +2823,13 @@ keyboard_right (NautilusCanvasContainer *container,
                 GdkEventKey             *event)
 {
     IsBetterCanvasFunction fallback;
-    IsBetterCanvasFunction next_column_fallback;
 
     fallback = NULL;
-    if (container->details->auto_layout &&
-        !nautilus_canvas_container_is_layout_vertical (container) &&
-        !is_rectangle_selection_event (event))
+    if (!is_rectangle_selection_event (event))
     {
         fallback = next_row_leftmost;
     }
 
-    next_column_fallback = NULL;
-    if (nautilus_canvas_container_is_layout_vertical (container) &&
-        gtk_widget_get_direction (GTK_WIDGET (container)) != GTK_TEXT_DIR_RTL)
-    {
-        next_column_fallback = next_column_bottommost;
-    }
-
     /* Right selects the next icon in the same row.
      * Control-Right sets the keyboard focus to the next icon in the same row.
      */
@@ -3987,7 +2841,7 @@ keyboard_right (NautilusCanvasContainer *container,
                         rightmost_in_top_row : leftmost_in_top_row,
                         same_row_right_side_leftmost,
                         fallback,
-                        next_column_fallback,
+                        NULL,
                         closest_in_90_degrees);
 }
 
@@ -3996,23 +2850,13 @@ keyboard_left (NautilusCanvasContainer *container,
                GdkEventKey             *event)
 {
     IsBetterCanvasFunction fallback;
-    IsBetterCanvasFunction previous_column_fallback;
 
     fallback = NULL;
-    if (container->details->auto_layout &&
-        !nautilus_canvas_container_is_layout_vertical (container) &&
-        !is_rectangle_selection_event (event))
+    if (!is_rectangle_selection_event (event))
     {
         fallback = previous_row_rightmost;
     }
 
-    previous_column_fallback = NULL;
-    if (nautilus_canvas_container_is_layout_vertical (container) &&
-        gtk_widget_get_direction (GTK_WIDGET (container)) == GTK_TEXT_DIR_RTL)
-    {
-        previous_column_fallback = previous_column_lowest;
-    }
-
     /* Left selects the next icon in the same row.
      * Control-Left sets the keyboard focus to the next icon in the same row.
      */
@@ -4024,7 +2868,7 @@ keyboard_left (NautilusCanvasContainer *container,
                         rightmost_in_top_row : leftmost_in_top_row,
                         same_row_left_side_rightmost,
                         fallback,
-                        previous_column_fallback,
+                        NULL,
                         closest_in_90_degrees);
 }
 
@@ -4032,35 +2876,16 @@ static void
 keyboard_down (NautilusCanvasContainer *container,
                GdkEventKey             *event)
 {
-    IsBetterCanvasFunction fallback;
     IsBetterCanvasFunction next_row_fallback;
 
-    fallback = NULL;
-    if (container->details->auto_layout &&
-        nautilus_canvas_container_is_layout_vertical (container) &&
-        !is_rectangle_selection_event (event))
+    next_row_fallback = NULL;
+    if (gtk_widget_get_direction (GTK_WIDGET (container)) == GTK_TEXT_DIR_RTL)
     {
-        if (gtk_widget_get_direction (GTK_WIDGET (container)) == GTK_TEXT_DIR_RTL)
-        {
-            fallback = previous_column_highest;
-        }
-        else
-        {
-            fallback = next_column_highest;
-        }
+        next_row_fallback = next_row_leftmost;
     }
-
-    next_row_fallback = NULL;
-    if (!nautilus_canvas_container_is_layout_vertical (container))
+    else
     {
-        if (gtk_widget_get_direction (GTK_WIDGET (container)) == GTK_TEXT_DIR_RTL)
-        {
-            next_row_fallback = next_row_leftmost;
-        }
-        else
-        {
-            next_row_fallback = next_row_rightmost;
-        }
+        next_row_fallback = next_row_rightmost;
     }
 
     /* Down selects the next icon in the same column.
@@ -4073,7 +2898,7 @@ keyboard_down (NautilusCanvasContainer *container,
                         nautilus_canvas_container_is_layout_rtl (container) ?
                         rightmost_in_top_row : leftmost_in_top_row,
                         same_column_below_highest,
-                        fallback,
+                        NULL,
                         next_row_fallback,
                         closest_in_90_degrees);
 }
@@ -4082,23 +2907,6 @@ static void
 keyboard_up (NautilusCanvasContainer *container,
              GdkEventKey             *event)
 {
-    IsBetterCanvasFunction fallback;
-
-    fallback = NULL;
-    if (container->details->auto_layout &&
-        nautilus_canvas_container_is_layout_vertical (container) &&
-        !is_rectangle_selection_event (event))
-    {
-        if (gtk_widget_get_direction (GTK_WIDGET (container)) == GTK_TEXT_DIR_RTL)
-        {
-            fallback = next_column_bottommost;
-        }
-        else
-        {
-            fallback = previous_column_lowest;
-        }
-    }
-
     /* Up selects the next icon in the same column.
      * Control-Up sets the keyboard focus to the next icon in the same column.
      */
@@ -4109,7 +2917,7 @@ keyboard_up (NautilusCanvasContainer *container,
                         nautilus_canvas_container_is_layout_rtl (container) ?
                         rightmost_in_top_row : leftmost_in_top_row,
                         same_column_above_lowest,
-                        fallback,
+                        NULL,
                         NULL,
                         closest_in_90_degrees);
 }
@@ -4190,12 +2998,6 @@ destroy (GtkWidget *object)
         container->details->idle_id = 0;
     }
 
-    if (container->details->stretch_idle_id != 0)
-    {
-        g_source_remove (container->details->stretch_idle_id);
-        container->details->stretch_idle_id = 0;
-    }
-
     if (container->details->align_idle_id != 0)
     {
         g_source_remove (container->details->align_idle_id);
@@ -4227,9 +3029,6 @@ finalize (GObject *object)
     g_signal_handlers_disconnect_by_func (nautilus_icon_view_preferences,
                                           text_ellipsis_limit_changed_container_callback,
                                           object);
-    g_signal_handlers_disconnect_by_func (nautilus_desktop_preferences,
-                                          text_ellipsis_limit_changed_container_callback,
-                                          object);
 
     g_hash_table_destroy (details->icon_set);
     details->icon_set = NULL;
@@ -4457,13 +3256,7 @@ style_updated (GtkWidget *widget)
 
     container = NAUTILUS_CANVAS_CONTAINER (widget);
 
-    /* Don't chain up to parent, if this is a desktop container,
-     * because that resets the background of the window.
-     */
-    if (!nautilus_canvas_container_get_is_desktop (container))
-    {
-        GTK_WIDGET_CLASS (nautilus_canvas_container_parent_class)->style_updated (widget);
-    }
+    GTK_WIDGET_CLASS (nautilus_canvas_container_parent_class)->style_updated (widget);
 
     if (gtk_widget_get_realized (widget))
     {
@@ -4637,330 +3430,68 @@ nautilus_canvas_container_did_not_drag (NautilusCanvasContainer *container,
             event->time - details->button_down_time < MAX_CLICK_TIME &&
             !button_event_modifies_selection (event))
         {
-            /* It's a tricky UI issue whether this should activate
-             * just the clicked item (as if it were a link), or all
-             * the selected items (as if you were issuing an "activate
-             * selection" command). For now, we're trying the activate
-             * entire selection version to see how it feels. Note that
-             * NautilusList goes the other way because its "links" seem
-             * much more link-like.
-             */
-            if (event->button == MIDDLE_BUTTON)
-            {
-                activate_selected_items_alternate (container, NULL);
-            }
-            else
-            {
-                activate_selected_items (container);
-            }
-        }
-    }
-}
-
-static gboolean
-clicked_within_double_click_interval (NautilusCanvasContainer *container)
-{
-    static gint64 last_click_time = 0;
-    static gint click_count = 0;
-    gint double_click_time;
-    gint64 current_time;
-
-    /* Determine click count */
-    g_object_get (G_OBJECT (gtk_widget_get_settings (GTK_WIDGET (container))),
-                  "gtk-double-click-time", &double_click_time,
-                  NULL);
-    current_time = g_get_monotonic_time ();
-    if (current_time - last_click_time < double_click_time * 1000)
-    {
-        click_count++;
-    }
-    else
-    {
-        click_count = 0;
-    }
-
-    /* Stash time for next compare */
-    last_click_time = current_time;
-
-    /* Only allow double click */
-    if (click_count == 1)
-    {
-        click_count = 0;
-        return TRUE;
-    }
-    else
-    {
-        return FALSE;
-    }
-}
-
-static void
-clear_drag_state (NautilusCanvasContainer *container)
-{
-    container->details->drag_icon = NULL;
-    container->details->drag_state = DRAG_STATE_INITIAL;
-}
-
-static gboolean
-start_stretching (NautilusCanvasContainer *container,
-                  GdkEvent                *event)
-{
-    NautilusCanvasContainerDetails *details;
-    NautilusCanvasIcon *icon;
-    GtkWidget *toplevel;
-    GdkDisplay *display;
-    GtkCornerType corner;
-    GdkCursor *cursor;
-
-    details = container->details;
-    icon = details->stretch_icon;
-    display = gtk_widget_get_display (GTK_WIDGET (container));
-
-    /* Check if we hit the stretch handles. */
-    if (!nautilus_canvas_item_hit_test_stretch_handles (icon->item,
-                                                        details->drag_x, details->drag_y,
-                                                        &corner))
-    {
-        return FALSE;
-    }
-
-    switch (corner)
-    {
-        case GTK_CORNER_TOP_LEFT:
-        {
-            cursor = gdk_cursor_new_for_display (display, GDK_TOP_LEFT_CORNER);
-        }
-        break;
-
-        case GTK_CORNER_BOTTOM_LEFT:
-        {
-            cursor = gdk_cursor_new_for_display (display, GDK_BOTTOM_LEFT_CORNER);
-        }
-        break;
-
-        case GTK_CORNER_TOP_RIGHT:
-        {
-            cursor = gdk_cursor_new_for_display (display, GDK_TOP_RIGHT_CORNER);
-        }
-        break;
-
-        case GTK_CORNER_BOTTOM_RIGHT:
-        {
-            cursor = gdk_cursor_new_for_display (display, GDK_BOTTOM_RIGHT_CORNER);
-        }
-        break;
-
-        default:
-        {
-            cursor = NULL;
-        }
-        break;
-    }
-    /* Set up the dragging. */
-    details->drag_state = DRAG_STATE_STRETCH;
-    eel_canvas_w2c (EEL_CANVAS (container),
-                    details->drag_x,
-                    details->drag_y,
-                    &details->stretch_start.pointer_x,
-                    &details->stretch_start.pointer_y);
-    eel_canvas_w2c (EEL_CANVAS (container),
-                    icon->x, icon->y,
-                    &details->stretch_start.icon_x,
-                    &details->stretch_start.icon_y);
-    icon_get_size (container, icon,
-                   &details->stretch_start.icon_size);
-
-    eel_canvas_item_grab (EEL_CANVAS_ITEM (icon->item),
-                          (GDK_POINTER_MOTION_MASK
-                           | GDK_BUTTON_RELEASE_MASK),
-                          cursor,
-                          event);
-    if (cursor)
-    {
-        g_object_unref (cursor);
-    }
-
-    /* Ensure the window itself is focused.. */
-    toplevel = gtk_widget_get_toplevel (GTK_WIDGET (container));
-    if (toplevel != NULL && gtk_widget_get_realized (toplevel))
-    {
-        gdk_window_focus (gtk_widget_get_window (toplevel), GDK_CURRENT_TIME);
-    }
-
-    return TRUE;
-}
-
-static gboolean
-update_stretch_at_idle (NautilusCanvasContainer *container)
-{
-    NautilusCanvasContainerDetails *details;
-    NautilusCanvasIcon *icon;
-    double world_x, world_y;
-    StretchState stretch_state;
-
-    details = container->details;
-    icon = details->stretch_icon;
-
-    if (icon == NULL)
-    {
-        container->details->stretch_idle_id = 0;
-        return FALSE;
-    }
-
-    eel_canvas_w2c (EEL_CANVAS (container),
-                    details->world_x, details->world_y,
-                    &stretch_state.pointer_x, &stretch_state.pointer_y);
-
-    compute_stretch (&details->stretch_start,
-                     &stretch_state);
-
-    eel_canvas_c2w (EEL_CANVAS (container),
-                    stretch_state.icon_x, stretch_state.icon_y,
-                    &world_x, &world_y);
-
-    icon_set_position (icon, world_x, world_y);
-    icon_set_size (container, icon, stretch_state.icon_size, FALSE, FALSE);
-
-    container->details->stretch_idle_id = 0;
-
-    return FALSE;
-}
-
-static void
-continue_stretching (NautilusCanvasContainer *container,
-                     double                   world_x,
-                     double                   world_y)
-{
-    g_return_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container));
-
-    container->details->world_x = world_x;
-    container->details->world_y = world_y;
-
-    if (container->details->stretch_idle_id == 0)
-    {
-        container->details->stretch_idle_id = g_idle_add ((GSourceFunc) update_stretch_at_idle, container);
-    }
-}
-
-static gboolean
-keyboard_stretching (NautilusCanvasContainer *container,
-                     GdkEventKey             *event)
-{
-    NautilusCanvasIcon *icon;
-    guint size;
-
-    icon = container->details->stretch_icon;
-
-    if (icon == NULL || !icon->is_selected)
-    {
-        return FALSE;
-    }
-
-    icon_get_size (container, icon, &size);
-
-    switch (event->keyval)
-    {
-        case GDK_KEY_equal:
-        case GDK_KEY_plus:
-        case GDK_KEY_KP_Add:
-        {
-            icon_set_size (container, icon, size + 5, FALSE, FALSE);
-        }
-        break;
-
-        case GDK_KEY_minus:
-        case GDK_KEY_KP_Subtract:
-        {
-            icon_set_size (container, icon, size - 5, FALSE, FALSE);
-        }
-        break;
-
-        case GDK_KEY_0:
-        case GDK_KEY_KP_0:
-        {
-            nautilus_canvas_container_move_icon (container, icon,
-                                                 icon->x, icon->y,
-                                                 1.0,
-                                                 FALSE, TRUE, TRUE);
+            /* It's a tricky UI issue whether this should activate
+             * just the clicked item (as if it were a link), or all
+             * the selected items (as if you were issuing an "activate
+             * selection" command). For now, we're trying the activate
+             * entire selection version to see how it feels. Note that
+             * NautilusList goes the other way because its "links" seem
+             * much more link-like.
+             */
+            if (event->button == MIDDLE_BUTTON)
+            {
+                activate_selected_items_alternate (container, NULL);
+            }
+            else
+            {
+                activate_selected_items (container);
+            }
         }
-        break;
     }
-
-    return TRUE;
-}
-
-static void
-ungrab_stretch_icon (NautilusCanvasContainer *container)
-{
-    eel_canvas_item_ungrab (EEL_CANVAS_ITEM (container->details->stretch_icon->item));
 }
 
-static void
-end_stretching (NautilusCanvasContainer *container,
-                double                   world_x,
-                double                   world_y)
+static gboolean
+clicked_within_double_click_interval (NautilusCanvasContainer *container)
 {
-    NautilusCanvasPosition position;
-    NautilusCanvasIcon *icon;
-
-    continue_stretching (container, world_x, world_y);
-    ungrab_stretch_icon (container);
-
-    /* now that we're done stretching, update the icon's position */
+    static gint64 last_click_time = 0;
+    static gint click_count = 0;
+    gint double_click_time;
+    gint64 current_time;
 
-    icon = container->details->drag_icon;
-    if (nautilus_canvas_container_is_layout_rtl (container))
+    /* Determine click count */
+    g_object_get (G_OBJECT (gtk_widget_get_settings (GTK_WIDGET (container))),
+                  "gtk-double-click-time", &double_click_time,
+                  NULL);
+    current_time = g_get_monotonic_time ();
+    if (current_time - last_click_time < double_click_time * 1000)
     {
-        position.x = icon->saved_ltr_x = get_mirror_x_position (container, icon, icon->x);
+        click_count++;
     }
     else
     {
-        position.x = icon->x;
+        click_count = 0;
     }
-    position.y = icon->y;
-    position.scale = icon->scale;
-    g_signal_emit (container,
-                   signals[ICON_POSITION_CHANGED], 0,
-                   icon->data, &position);
-
-    clear_drag_state (container);
-    redo_layout (container);
-}
-
-static gboolean
-undo_stretching (NautilusCanvasContainer *container)
-{
-    NautilusCanvasIcon *stretched_icon;
 
-    stretched_icon = container->details->stretch_icon;
+    /* Stash time for next compare */
+    last_click_time = current_time;
 
-    if (stretched_icon == NULL)
+    /* Only allow double click */
+    if (click_count == 1)
     {
-        return FALSE;
+        click_count = 0;
+        return TRUE;
     }
-
-    if (container->details->drag_state == DRAG_STATE_STRETCH)
+    else
     {
-        ungrab_stretch_icon (container);
-        clear_drag_state (container);
+        return FALSE;
     }
-    nautilus_canvas_item_set_show_stretch_handles
-        (stretched_icon->item, FALSE);
-
-    icon_set_position (stretched_icon,
-                       container->details->stretch_initial_x,
-                       container->details->stretch_initial_y);
-    icon_set_size (container,
-                   stretched_icon,
-                   container->details->stretch_initial_size,
-                   TRUE,
-                   TRUE);
-
-    container->details->stretch_icon = NULL;
-    emit_stretch_ended (container, stretched_icon);
-    redo_layout (container);
+}
 
-    return TRUE;
+static void
+clear_drag_state (NautilusCanvasContainer *container)
+{
+    container->details->drag_icon = NULL;
+    container->details->drag_state = DRAG_STATE_INITIAL;
 }
 
 static gboolean
@@ -4969,7 +3500,6 @@ button_release_event (GtkWidget      *widget,
 {
     NautilusCanvasContainer *container;
     NautilusCanvasContainerDetails *details;
-    double world_x, world_y;
 
     container = NAUTILUS_CANVAS_CONTAINER (widget);
     details = container->details;
@@ -5000,14 +3530,6 @@ button_release_event (GtkWidget      *widget,
             }
             break;
 
-            case DRAG_STATE_STRETCH:
-            {
-                eel_canvas_window_to_world
-                    (EEL_CANVAS (container), event->x, event->y, &world_x, &world_y);
-                end_stretching (container, world_x, world_y);
-            }
-            break;
-
             default:
             {
             }
@@ -5079,14 +3601,6 @@ motion_notify_event (GtkWidget      *widget,
             }
             break;
 
-            case DRAG_STATE_STRETCH:
-            {
-                eel_canvas_window_to_world
-                    (EEL_CANVAS (container), event->x, event->y, &world_x, &world_y);
-                continue_stretching (container, world_x, world_y);
-            }
-            break;
-
             default:
             {
             }
@@ -5208,27 +3722,6 @@ key_press_event (GtkWidget   *widget,
         }
         break;
 
-        case GDK_KEY_Escape:
-        {
-            handled = undo_stretching (container);
-        }
-        break;
-
-        case GDK_KEY_plus:
-        case GDK_KEY_minus:
-        case GDK_KEY_equal:
-        case GDK_KEY_KP_Add:
-        case GDK_KEY_KP_Subtract:
-        case GDK_KEY_0:
-        case GDK_KEY_KP_0:
-        {
-            if (event->state & GDK_CONTROL_MASK)
-            {
-                handled = keyboard_stretching (container, event);
-            }
-        }
-        break;
-
         case GDK_KEY_F10:
         {
             /* handle Ctrl+F10 because we want to display the
@@ -5332,20 +3825,10 @@ nautilus_canvas_container_constructor (GType                  type,
                  construct_params);
 
     container = NAUTILUS_CANVAS_CONTAINER (object);
-    if (nautilus_canvas_container_get_is_desktop (container))
-    {
-        g_signal_connect_swapped (nautilus_desktop_preferences,
-                                  "changed::" NAUTILUS_PREFERENCES_DESKTOP_TEXT_ELLIPSIS_LIMIT,
-                                  G_CALLBACK (text_ellipsis_limit_changed_container_callback),
-                                  container);
-    }
-    else
-    {
-        g_signal_connect_swapped (nautilus_icon_view_preferences,
-                                  "changed::" NAUTILUS_PREFERENCES_ICON_VIEW_TEXT_ELLIPSIS_LIMIT,
-                                  G_CALLBACK (text_ellipsis_limit_changed_container_callback),
-                                  container);
-    }
+    g_signal_connect_swapped (nautilus_icon_view_preferences,
+                              "changed::" NAUTILUS_PREFERENCES_ICON_VIEW_TEXT_ELLIPSIS_LIMIT,
+                              G_CALLBACK (text_ellipsis_limit_changed_container_callback),
+                              container);
 
     return object;
 }
@@ -5441,37 +3924,6 @@ nautilus_canvas_container_class_init (NautilusCanvasContainerClass *class)
                         g_cclosure_marshal_VOID__POINTER,
                         G_TYPE_NONE, 1,
                         G_TYPE_POINTER);
-    signals[ICON_POSITION_CHANGED]
-        = g_signal_new ("icon-position-changed",
-                        G_TYPE_FROM_CLASS (class),
-                        G_SIGNAL_RUN_LAST,
-                        G_STRUCT_OFFSET (NautilusCanvasContainerClass,
-                                         icon_position_changed),
-                        NULL, NULL,
-                        g_cclosure_marshal_generic,
-                        G_TYPE_NONE, 2,
-                        G_TYPE_POINTER,
-                        G_TYPE_POINTER);
-    signals[ICON_STRETCH_STARTED]
-        = g_signal_new ("icon-stretch-started",
-                        G_TYPE_FROM_CLASS (class),
-                        G_SIGNAL_RUN_LAST,
-                        G_STRUCT_OFFSET (NautilusCanvasContainerClass,
-                                         icon_stretch_started),
-                        NULL, NULL,
-                        g_cclosure_marshal_VOID__POINTER,
-                        G_TYPE_NONE, 1,
-                        G_TYPE_POINTER);
-    signals[ICON_STRETCH_ENDED]
-        = g_signal_new ("icon-stretch-ended",
-                        G_TYPE_FROM_CLASS (class),
-                        G_SIGNAL_RUN_LAST,
-                        G_STRUCT_OFFSET (NautilusCanvasContainerClass,
-                                         icon_stretch_ended),
-                        NULL, NULL,
-                        g_cclosure_marshal_VOID__POINTER,
-                        G_TYPE_NONE, 1,
-                        G_TYPE_POINTER);
     signals[GET_ICON_URI]
         = g_signal_new ("get-icon-uri",
                         G_TYPE_FROM_CLASS (class),
@@ -5605,17 +4057,6 @@ nautilus_canvas_container_class_init (NautilusCanvasContainerClass *class)
                         G_TYPE_INT, 2,
                         G_TYPE_POINTER,
                         G_TYPE_STRING);
-    signals[GET_STORED_ICON_POSITION]
-        = g_signal_new ("get-stored-icon-position",
-                        G_TYPE_FROM_CLASS (class),
-                        G_SIGNAL_RUN_LAST,
-                        G_STRUCT_OFFSET (NautilusCanvasContainerClass,
-                                         get_stored_icon_position),
-                        NULL, NULL,
-                        g_cclosure_marshal_generic,
-                        G_TYPE_BOOLEAN, 2,
-                        G_TYPE_POINTER,
-                        G_TYPE_POINTER);
     signals[GET_STORED_LAYOUT_TIMESTAMP]
         = g_signal_new ("get-stored-layout-timestamp",
                         G_TYPE_FROM_CLASS (class),
@@ -5638,15 +4079,6 @@ nautilus_canvas_container_class_init (NautilusCanvasContainerClass *class)
                         G_TYPE_BOOLEAN, 2,
                         G_TYPE_POINTER,
                         G_TYPE_POINTER);
-    signals[LAYOUT_CHANGED]
-        = g_signal_new ("layout-changed",
-                        G_TYPE_FROM_CLASS (class),
-                        G_SIGNAL_RUN_LAST,
-                        G_STRUCT_OFFSET (NautilusCanvasContainerClass,
-                                         layout_changed),
-                        NULL, NULL,
-                        g_cclosure_marshal_VOID__VOID,
-                        G_TYPE_NONE, 0);
     signals[BAND_SELECT_STARTED]
         = g_signal_new ("band-select-started",
                         G_TYPE_FROM_CLASS (class),
@@ -5770,7 +4202,6 @@ handle_scale_factor_changed (GObject    *object,
 
 
 static int text_ellipsis_limits[NAUTILUS_CANVAS_ZOOM_LEVEL_N_ENTRIES];
-static int desktop_text_ellipsis_limit;
 
 static gboolean
 get_text_ellipsis_limit_for_zoom (char       **strs,
@@ -5853,15 +4284,6 @@ text_ellipsis_limit_changed_callback (gpointer callback_data)
 }
 
 static void
-desktop_text_ellipsis_limit_changed_callback (gpointer callback_data)
-{
-    int pref;
-
-    pref = g_settings_get_int (nautilus_desktop_preferences, 
NAUTILUS_PREFERENCES_DESKTOP_TEXT_ELLIPSIS_LIMIT);
-    desktop_text_ellipsis_limit = pref;
-}
-
-static void
 nautilus_canvas_container_init (NautilusCanvasContainer *container)
 {
     NautilusCanvasContainerDetails *details;
@@ -5891,12 +4313,6 @@ nautilus_canvas_container_init (NautilusCanvasContainer *container)
                                   NULL);
         text_ellipsis_limit_changed_callback (NULL);
 
-        g_signal_connect_swapped (nautilus_icon_view_preferences,
-                                  "changed::" NAUTILUS_PREFERENCES_DESKTOP_TEXT_ELLIPSIS_LIMIT,
-                                  G_CALLBACK (desktop_text_ellipsis_limit_changed_callback),
-                                  NULL);
-        desktop_text_ellipsis_limit_changed_callback (NULL);
-
         setup_prefs = TRUE;
     }
 }
@@ -5993,17 +4409,6 @@ handle_canvas_button_press (NautilusCanvasContainer *container,
         details->drag_y = event->y;
         details->drag_state = DRAG_STATE_MOVE_OR_COPY;
         details->drag_started = FALSE;
-
-        /* Check to see if this is a click on the stretch handles.
-         * If so, it won't modify the selection.
-         */
-        if (icon == container->details->stretch_icon)
-        {
-            if (start_stretching (container, (GdkEvent *) event))
-            {
-                return TRUE;
-            }
-        }
     }
 
     /* Modify the selection as appropriate. Selection is modified
@@ -6154,7 +4559,6 @@ nautilus_canvas_container_clear (NautilusCanvasContainer *container)
     clear_keyboard_rubberband_start (container);
     unschedule_keyboard_icon_reveal (container);
     set_pending_icon_to_reveal (container, NULL);
-    details->stretch_icon = NULL;
     details->drop_target = NULL;
 
     for (p = details->icons; p != NULL; p = p->next)
@@ -6224,24 +4628,8 @@ nautilus_canvas_container_get_first_visible_icon (NautilusCanvasContainer *conta
                                         &x1, &y1, &x2, &y2);
 
             compare_lt = FALSE;
-            if (nautilus_canvas_container_is_layout_vertical (container))
-            {
-                pos = &x1;
-                if (nautilus_canvas_container_is_layout_rtl (container))
-                {
-                    compare_lt = TRUE;
-                    better_icon = x1 < x + ICON_PAD_LEFT;
-                }
-                else
-                {
-                    better_icon = x2 > x + ICON_PAD_LEFT;
-                }
-            }
-            else
-            {
-                pos = &y1;
-                better_icon = y2 > y + ICON_PAD_TOP;
-            }
+            pos = &y1;
+            better_icon = y2 > y + ICON_PAD_TOP;
             if (better_icon)
             {
                 if (best_icon == NULL)
@@ -6278,11 +4666,10 @@ nautilus_canvas_container_scroll_to_canvas (NautilusCanvasContainer *container,
 {
     GList *l;
     NautilusCanvasIcon *icon;
-    GtkAdjustment *hadj, *vadj;
+    GtkAdjustment *vadj;
     EelIRect bounds;
     GtkAllocation allocation;
 
-    hadj = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (container));
     vadj = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (container));
     gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
 
@@ -6298,31 +4685,10 @@ nautilus_canvas_container_scroll_to_canvas (NautilusCanvasContainer *container,
         if (icon->data == data &&
             icon_is_positioned (icon))
         {
-            if (nautilus_canvas_container_is_auto_layout (container))
-            {
-                /* ensure that we reveal the entire row/column */
-                icon_get_row_and_column_bounds (container, icon, &bounds);
-            }
-            else
-            {
-                item_get_canvas_bounds (EEL_CANVAS_ITEM (icon->item), &bounds);
-            }
+            /* ensure that we reveal the entire row/column */
+            icon_get_row_and_column_bounds (container, icon, &bounds);
 
-            if (nautilus_canvas_container_is_layout_vertical (container))
-            {
-                if (nautilus_canvas_container_is_layout_rtl (container))
-                {
-                    gtk_adjustment_set_value (hadj, bounds.x1 - allocation.width);
-                }
-                else
-                {
-                    gtk_adjustment_set_value (hadj, bounds.x0);
-                }
-            }
-            else
-            {
-                gtk_adjustment_set_value (vadj, bounds.y0);
-            }
+            gtk_adjustment_set_value (vadj, bounds.y0);
         }
 
         l = l->next;
@@ -6440,10 +4806,6 @@ icon_destroy (NautilusCanvasContainer *container,
     {
         set_pending_icon_to_reveal (container, NULL);
     }
-    if (details->stretch_icon == icon)
-    {
-        details->stretch_icon = NULL;
-    }
 
     icon_free (icon);
 
@@ -6605,14 +4967,7 @@ nautilus_canvas_container_update_visible_icons (NautilusCanvasContainer *contain
                                  &x1,
                                  &y1);
 
-            if (nautilus_canvas_container_is_layout_vertical (container))
-            {
-                visible = x1 >= min_x && x0 <= max_x;
-            }
-            else
-            {
-                visible = y1 >= min_y && y0 <= max_y;
-            }
+            visible = y1 >= min_y && y0 <= max_y;
 
             if (visible)
             {
@@ -6632,20 +4987,14 @@ static void
 handle_vadjustment_changed (GtkAdjustment           *adjustment,
                             NautilusCanvasContainer *container)
 {
-    if (!nautilus_canvas_container_is_layout_vertical (container))
-    {
-        nautilus_canvas_container_update_visible_icons (container);
-    }
+    nautilus_canvas_container_update_visible_icons (container);
 }
 
 static void
 handle_hadjustment_changed (GtkAdjustment           *adjustment,
                             NautilusCanvasContainer *container)
 {
-    if (nautilus_canvas_container_is_layout_vertical (container))
-    {
-        nautilus_canvas_container_update_visible_icons (container);
-    }
+    nautilus_canvas_container_update_visible_icons (container);
 }
 
 
@@ -6707,37 +5056,6 @@ nautilus_canvas_container_update_icon (NautilusCanvasContainer *container,
     g_free (additional_text);
 }
 
-static gboolean
-assign_icon_position (NautilusCanvasContainer *container,
-                      NautilusCanvasIcon      *icon)
-{
-    gboolean have_stored_position;
-    NautilusCanvasPosition position;
-
-    /* Get the stored position. */
-    have_stored_position = FALSE;
-    position.scale = 1.0;
-    g_signal_emit (container,
-                   signals[GET_STORED_ICON_POSITION], 0,
-                   icon->data,
-                   &position,
-                   &have_stored_position);
-    icon->scale = position.scale;
-    if (!container->details->auto_layout)
-    {
-        if (have_stored_position)
-        {
-            icon_set_position (icon, position.x, position.y);
-            icon->saved_ltr_x = icon->x;
-        }
-        else
-        {
-            return FALSE;
-        }
-    }
-    return TRUE;
-}
-
 static void
 finish_adding_icon (NautilusCanvasContainer *container,
                     NautilusCanvasIcon      *icon)
@@ -6754,118 +5072,18 @@ finish_adding_icon (NautilusCanvasContainer *container,
 static gboolean
 finish_adding_new_icons (NautilusCanvasContainer *container)
 {
-    GList *p, *new_icons, *no_position_icons, *semi_position_icons;
-    NautilusCanvasIcon *icon;
-    double bottom;
+    GList *p, *new_icons;
 
     new_icons = container->details->new_icons;
     container->details->new_icons = NULL;
 
     /* Position most icons (not unpositioned manual-layout icons). */
-    new_icons = g_list_reverse (new_icons);
-    no_position_icons = semi_position_icons = NULL;
-    for (p = new_icons; p != NULL; p = p->next)
-    {
-        icon = p->data;
-        if (icon->has_lazy_position)
-        {
-            if (!assign_icon_position (container, icon))
-            {
-                semi_position_icons = g_list_prepend (semi_position_icons, icon);
-            }
-        }
-        else if (!assign_icon_position (container, icon))
-        {
-            no_position_icons = g_list_prepend (no_position_icons, icon);
-        }
-
-        finish_adding_icon (container, icon);
-    }
-    g_list_free (new_icons);
-
-    if (semi_position_icons != NULL)
-    {
-        PlacementGrid *grid;
-        time_t now;
-        gboolean dummy;
-
-        g_assert (!container->details->auto_layout);
-
-        semi_position_icons = g_list_reverse (semi_position_icons);
-
-        /* This is currently only used on the desktop.
-         * Thus, we pass FALSE for tight, like lay_down_icons_tblr */
-        grid = placement_grid_new (container, FALSE);
-
-        /* we can do nothing, just return */
-        if (grid == NULL)
-        {
-            return FALSE;
-        }
-
-        for (p = container->details->icons; p != NULL; p = p->next)
-        {
-            icon = p->data;
-
-            if (icon_is_positioned (icon) && !icon->has_lazy_position)
-            {
-                placement_grid_mark_icon (grid, icon);
-            }
-        }
-
-        now = time (NULL);
-
-        for (p = semi_position_icons; p != NULL; p = p->next)
-        {
-            NautilusCanvasIcon *icon;
-            NautilusCanvasPosition position;
-            int x, y;
-
-            icon = p->data;
-            x = icon->x;
-            y = icon->y;
-
-            find_empty_location (container, grid,
-                                 icon, x, y, &x, &y);
-
-            icon_set_position (icon, x, y);
-
-            position.x = icon->x;
-            position.y = icon->y;
-            position.scale = icon->scale;
-            placement_grid_mark_icon (grid, icon);
-            g_signal_emit (container, signals[ICON_POSITION_CHANGED], 0,
-                           icon->data, &position);
-            g_signal_emit (container, signals[STORE_LAYOUT_TIMESTAMP], 0,
-                           icon->data, &now, &dummy);
-
-            /* ensure that next time we run this code, the formerly semi-positioned
-             * icons are treated as being positioned. */
-            icon->has_lazy_position = FALSE;
-        }
-
-        placement_grid_free (grid);
-
-        g_list_free (semi_position_icons);
-    }
-
-    /* Position the unpositioned manual layout icons. */
-    if (no_position_icons != NULL)
-    {
-        g_assert (!container->details->auto_layout);
-
-        sort_icons (container, &no_position_icons);
-        if (nautilus_canvas_container_get_is_desktop (container))
-        {
-            lay_down_icons (container, no_position_icons, CONTAINER_PAD_TOP);
-        }
-        else
-        {
-            get_all_icon_bounds (container, NULL, NULL, NULL, &bottom, BOUNDS_USAGE_FOR_LAYOUT);
-            lay_down_icons (container, no_position_icons, bottom + ICON_PAD_BOTTOM);
-        }
-        g_list_free (no_position_icons);
+    new_icons = g_list_reverse (new_icons);
+    for (p = new_icons; p != NULL; p = p->next)
+    {
+        finish_adding_icon (container, p->data);
     }
+    g_list_free (new_icons);
 
     if (container->details->store_layout_timestamps_when_finishing_new_icons)
     {
@@ -7223,11 +5441,9 @@ nautilus_canvas_container_get_icons_bounding_box (NautilusCanvasContainer *conta
         icon_get_bounding_box ((NautilusCanvasIcon *) node->data,
                                &x1, &y1, &x2, &y2,
                                BOUNDS_USAGE_FOR_DISPLAY);
-        g_array_index (result, GdkRectangle, index).x = x1 * EEL_CANVAS (container)->pixels_per_unit +
-                                                        container->details->left_margin;
+        g_array_index (result, GdkRectangle, index).x = x1 * EEL_CANVAS (container)->pixels_per_unit;
         g_array_index (result, GdkRectangle, index).width = (x2 - x1) * EEL_CANVAS 
(container)->pixels_per_unit;
-        g_array_index (result, GdkRectangle, index).y = y1 * EEL_CANVAS (container)->pixels_per_unit +
-                                                        container->details->top_margin;
+        g_array_index (result, GdkRectangle, index).y = y1 * EEL_CANVAS (container)->pixels_per_unit;
         g_array_index (result, GdkRectangle, index).height = (y2 - y1) * EEL_CANVAS 
(container)->pixels_per_unit;
     }
 
@@ -7558,162 +5774,6 @@ has_selection (NautilusCanvasContainer *container)
     return get_nth_selected_icon (container, 1) != NULL;
 }
 
-/**
- * nautilus_canvas_container_show_stretch_handles:
- * @container: An canvas container widget.
- *
- * Makes stretch handles visible on the first selected icon.
- **/
-void
-nautilus_canvas_container_show_stretch_handles (NautilusCanvasContainer *container)
-{
-    NautilusCanvasContainerDetails *details;
-    NautilusCanvasIcon *icon;
-    guint initial_size;
-
-    icon = get_first_selected_icon (container);
-    if (icon == NULL)
-    {
-        return;
-    }
-
-    /* Check if it already has stretch handles. */
-    details = container->details;
-    if (details->stretch_icon == icon)
-    {
-        return;
-    }
-
-    /* Get rid of the existing stretch handles and put them on the new canvas. */
-    if (details->stretch_icon != NULL)
-    {
-        nautilus_canvas_item_set_show_stretch_handles
-            (details->stretch_icon->item, FALSE);
-        ungrab_stretch_icon (container);
-        emit_stretch_ended (container, details->stretch_icon);
-    }
-    nautilus_canvas_item_set_show_stretch_handles (icon->item, TRUE);
-    details->stretch_icon = icon;
-
-    icon_get_size (container, icon, &initial_size);
-
-    /* only need to keep size in one dimension, since they are constrained to be the same */
-    container->details->stretch_initial_x = icon->x;
-    container->details->stretch_initial_y = icon->y;
-    container->details->stretch_initial_size = initial_size;
-
-    emit_stretch_started (container, icon);
-}
-
-/**
- * nautilus_canvas_container_has_stretch_handles
- * @container: An canvas container widget.
- *
- * Returns true if the first selected item has stretch handles.
- **/
-gboolean
-nautilus_canvas_container_has_stretch_handles (NautilusCanvasContainer *container)
-{
-    NautilusCanvasIcon *icon;
-
-    icon = get_first_selected_icon (container);
-    if (icon == NULL)
-    {
-        return FALSE;
-    }
-
-    return icon == container->details->stretch_icon;
-}
-
-/**
- * nautilus_canvas_container_is_stretched
- * @container: An canvas container widget.
- *
- * Returns true if the any selected item is stretched to a size other than 1.0.
- **/
-gboolean
-nautilus_canvas_container_is_stretched (NautilusCanvasContainer *container)
-{
-    GList *p;
-    NautilusCanvasIcon *icon;
-
-    for (p = container->details->icons; p != NULL; p = p->next)
-    {
-        icon = p->data;
-        if (icon->is_selected && icon->scale != 1.0)
-        {
-            return TRUE;
-        }
-    }
-    return FALSE;
-}
-
-/**
- * nautilus_canvas_container_unstretch
- * @container: An canvas container widget.
- *
- * Gets rid of any canvas stretching.
- **/
-void
-nautilus_canvas_container_unstretch (NautilusCanvasContainer *container)
-{
-    GList *p;
-    NautilusCanvasIcon *icon;
-
-    for (p = container->details->icons; p != NULL; p = p->next)
-    {
-        icon = p->data;
-        if (icon->is_selected)
-        {
-            nautilus_canvas_container_move_icon (container, icon,
-                                                 icon->x, icon->y,
-                                                 1.0,
-                                                 FALSE, TRUE, TRUE);
-        }
-    }
-}
-
-static void
-compute_stretch (StretchState *start,
-                 StretchState *current)
-{
-    gboolean right, bottom;
-    int x_stretch, y_stretch;
-
-    /* FIXME bugzilla.gnome.org 45390: This doesn't correspond to
-     * the way the handles are drawn.
-     */
-    /* Figure out which handle we are dragging. */
-    right = start->pointer_x > start->icon_x + (int) start->icon_size / 2;
-    bottom = start->pointer_y > start->icon_y + (int) start->icon_size / 2;
-
-    /* Figure out how big we should stretch. */
-    x_stretch = start->pointer_x - current->pointer_x;
-    y_stretch = start->pointer_y - current->pointer_y;
-    if (right)
-    {
-        x_stretch = -x_stretch;
-    }
-    if (bottom)
-    {
-        y_stretch = -y_stretch;
-    }
-    current->icon_size = MAX ((int) start->icon_size + MIN (x_stretch, y_stretch),
-                              (int) NAUTILUS_CANVAS_ICON_SIZE_SMALL);
-
-    /* Figure out where the corner of the icon should be. */
-    current->icon_x = start->icon_x;
-    if (!right)
-    {
-        current->icon_x += start->icon_size - current->icon_size;
-    }
-    current->icon_y = start->icon_y;
-    if (!bottom)
-    {
-        current->icon_y += start->icon_size - current->icon_size;
-    }
-}
-
 char *
 nautilus_canvas_container_get_icon_uri (NautilusCanvasContainer *container,
                                         NautilusCanvasIcon      *icon)
@@ -7768,164 +5828,13 @@ reset_scroll_region_if_not_empty (NautilusCanvasContainer *container)
     }
 }
 
-/* Switch from automatic layout to manual or vice versa.
- * If we switch to manual layout, we restore the icon positions from the
- * last manual layout.
- */
-void
-nautilus_canvas_container_set_auto_layout (NautilusCanvasContainer *container,
-                                           gboolean                 auto_layout)
-{
-    g_return_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container));
-    g_return_if_fail (auto_layout == FALSE || auto_layout == TRUE);
-
-    if (container->details->auto_layout == auto_layout)
-    {
-        return;
-    }
-
-    reset_scroll_region_if_not_empty (container);
-    container->details->auto_layout = auto_layout;
-
-    if (!auto_layout)
-    {
-        reload_icon_positions (container);
-        nautilus_canvas_container_freeze_icon_positions (container);
-    }
-
-    container->details->needs_resort = TRUE;
-    redo_layout (container);
-
-    g_signal_emit (container, signals[LAYOUT_CHANGED], 0);
-}
-
-gboolean
-nautilus_canvas_container_is_keep_aligned (NautilusCanvasContainer *container)
-{
-    return container->details->keep_aligned;
-}
-
-static gboolean
-align_icons_callback (gpointer callback_data)
-{
-    NautilusCanvasContainer *container;
-
-    container = NAUTILUS_CANVAS_CONTAINER (callback_data);
-    align_icons (container);
-    container->details->align_idle_id = 0;
-
-    return FALSE;
-}
-
-static void
-unschedule_align_icons (NautilusCanvasContainer *container)
-{
-    if (container->details->align_idle_id != 0)
-    {
-        g_source_remove (container->details->align_idle_id);
-        container->details->align_idle_id = 0;
-    }
-}
-
-static void
-schedule_align_icons (NautilusCanvasContainer *container)
-{
-    if (container->details->align_idle_id == 0
-        && container->details->has_been_allocated)
-    {
-        container->details->align_idle_id = g_idle_add
-                                                (align_icons_callback, container);
-    }
-}
-
-void
-nautilus_canvas_container_set_keep_aligned (NautilusCanvasContainer *container,
-                                            gboolean                 keep_aligned)
-{
-    if (container->details->keep_aligned != keep_aligned)
-    {
-        container->details->keep_aligned = keep_aligned;
-
-        if (keep_aligned && !container->details->auto_layout)
-        {
-            schedule_align_icons (container);
-        }
-        else
-        {
-            unschedule_align_icons (container);
-        }
-    }
-}
-
-/* Switch from automatic to manual layout, freezing all the icons in their
- * current positions instead of restoring canvas positions from the last manual
- * layout as set_auto_layout does.
- */
-void
-nautilus_canvas_container_freeze_icon_positions (NautilusCanvasContainer *container)
-{
-    gboolean changed;
-    GList *p;
-    NautilusCanvasIcon *icon;
-    NautilusCanvasPosition position;
-
-    /* This early-exit avoids freezing the icons before they have been properly
-     * positioned, since we won't re-layout if auto_layout is FALSE.
-     *
-     * The container will freeze the icons after it lays them out once we've
-     * been allocated (e.g. in lay_out_icons_vertical_desktop).
-     */
-    if (!container->details->has_been_allocated)
-    {
-        g_debug ("Not freezing icon positions yet; we haven't been allocated");
-        return;
-    }
-
-    changed = container->details->auto_layout;
-    container->details->auto_layout = FALSE;
-
-    for (p = container->details->icons; p != NULL; p = p->next)
-    {
-        icon = p->data;
-
-        position.x = icon->saved_ltr_x;
-        position.y = icon->y;
-        position.scale = icon->scale;
-        g_signal_emit (container, signals[ICON_POSITION_CHANGED], 0,
-                       icon->data, &position);
-    }
-
-    if (changed)
-    {
-        g_signal_emit (container, signals[LAYOUT_CHANGED], 0);
-    }
-}
-
 /* Re-sort, switching to automatic layout if it was in manual layout. */
 void
 nautilus_canvas_container_sort (NautilusCanvasContainer *container)
 {
-    gboolean changed;
-
-    changed = !container->details->auto_layout;
-    container->details->auto_layout = TRUE;
-
     reset_scroll_region_if_not_empty (container);
     container->details->needs_resort = TRUE;
     redo_layout (container);
-
-    if (changed)
-    {
-        g_signal_emit (container, signals[LAYOUT_CHANGED], 0);
-    }
-}
-
-gboolean
-nautilus_canvas_container_is_auto_layout (NautilusCanvasContainer *container)
-{
-    g_return_val_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container), FALSE);
-
-    return container->details->auto_layout;
 }
 
 void
@@ -7937,68 +5846,6 @@ nautilus_canvas_container_set_single_click_mode (NautilusCanvasContainer *contai
     container->details->single_click_mode = single_click_mode;
 }
 
-/* Return if the canvas container is a fixed size */
-gboolean
-nautilus_canvas_container_get_is_fixed_size (NautilusCanvasContainer *container)
-{
-    g_return_val_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container), FALSE);
-
-    return container->details->is_fixed_size;
-}
-
-/* Set the canvas container to be a fixed size */
-void
-nautilus_canvas_container_set_is_fixed_size (NautilusCanvasContainer *container,
-                                             gboolean                 is_fixed_size)
-{
-    g_return_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container));
-
-    container->details->is_fixed_size = is_fixed_size;
-}
-
-gboolean
-nautilus_canvas_container_get_is_desktop (NautilusCanvasContainer *container)
-{
-    g_return_val_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container), FALSE);
-
-    return container->details->is_desktop;
-}
-
-void
-nautilus_canvas_container_set_is_desktop (NautilusCanvasContainer *container,
-                                          gboolean                 is_desktop)
-{
-    g_return_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container));
-
-    container->details->is_desktop = is_desktop;
-
-    if (is_desktop)
-    {
-        GtkStyleContext *context;
-
-        context = gtk_widget_get_style_context (GTK_WIDGET (container));
-        gtk_style_context_add_class (context, "nautilus-desktop");
-    }
-}
-
-void
-nautilus_canvas_container_set_margins (NautilusCanvasContainer *container,
-                                       int                      left_margin,
-                                       int                      right_margin,
-                                       int                      top_margin,
-                                       int                      bottom_margin)
-{
-    g_return_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container));
-
-    container->details->left_margin = left_margin;
-    container->details->right_margin = right_margin;
-    container->details->top_margin = top_margin;
-    container->details->bottom_margin = bottom_margin;
-
-    /* redo layout of icons as the margins have changed */
-    schedule_redo_layout (container);
-}
-
 /* handle theme changes */
 
 void
@@ -8638,28 +6485,12 @@ nautilus_canvas_container_is_layout_rtl (NautilusCanvasContainer *container)
     return (gtk_widget_get_direction (GTK_WIDGET (container)) == GTK_TEXT_DIR_RTL);
 }
 
-gboolean
-nautilus_canvas_container_is_layout_vertical (NautilusCanvasContainer *container)
-{
-    g_return_val_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container), FALSE);
-
-    /* we only do vertical layout in the desktop nowadays */
-    return container->details->is_desktop;
-}
-
 int
 nautilus_canvas_container_get_max_layout_lines_for_pango (NautilusCanvasContainer *container)
 {
     int limit;
 
-    if (nautilus_canvas_container_get_is_desktop (container))
-    {
-        limit = desktop_text_ellipsis_limit;
-    }
-    else
-    {
-        limit = text_ellipsis_limits[container->details->zoom_level];
-    }
+    limit = text_ellipsis_limits[container->details->zoom_level];
 
     if (limit <= 0)
     {
@@ -8674,14 +6505,7 @@ nautilus_canvas_container_get_max_layout_lines (NautilusCanvasContainer *contain
 {
     int limit;
 
-    if (nautilus_canvas_container_get_is_desktop (container))
-    {
-        limit = desktop_text_ellipsis_limit;
-    }
-    else
-    {
-        limit = text_ellipsis_limits[container->details->zoom_level];
-    }
+    limit = text_ellipsis_limits[container->details->zoom_level];
 
     if (limit <= 0)
     {
@@ -8759,44 +6583,3 @@ nautilus_canvas_container_set_store_layout_timestamps (NautilusCanvasContainer *
 {
     container->details->store_layout_timestamps = store_layout_timestamps;
 }
-
-
-#if !defined (NAUTILUS_OMIT_SELF_CHECK)
-
-static char *
-check_compute_stretch (int icon_x,
-                       int icon_y,
-                       int icon_size,
-                       int start_pointer_x,
-                       int start_pointer_y,
-                       int end_pointer_x,
-                       int end_pointer_y)
-{
-    StretchState start, current;
-
-    start.icon_x = icon_x;
-    start.icon_y = icon_y;
-    start.icon_size = icon_size;
-    start.pointer_x = start_pointer_x;
-    start.pointer_y = start_pointer_y;
-    current.pointer_x = end_pointer_x;
-    current.pointer_y = end_pointer_y;
-
-    compute_stretch (&start, &current);
-
-    return g_strdup_printf ("%d,%d:%d",
-                            current.icon_x,
-                            current.icon_y,
-                            current.icon_size);
-}
-
-void
-nautilus_self_check_canvas_container (void)
-{
-    EEL_CHECK_STRING_RESULT (check_compute_stretch (0, 0, 64, 0, 0, 0, 0), "0,0:64");
-    EEL_CHECK_STRING_RESULT (check_compute_stretch (0, 0, 64, 64, 64, 65, 65), "0,0:65");
-    EEL_CHECK_STRING_RESULT (check_compute_stretch (0, 0, 64, 64, 64, 65, 64), "0,0:64");
-    EEL_CHECK_STRING_RESULT (check_compute_stretch (100, 100, 64, 105, 105, 40, 40), "35,35:129");
-}
-
-#endif /* ! NAUTILUS_OMIT_SELF_CHECK */
diff --git a/src/nautilus-canvas-container.h b/src/nautilus-canvas-container.h
index 635349d7e..2eda2835f 100644
--- a/src/nautilus-canvas-container.h
+++ b/src/nautilus-canvas-container.h
@@ -194,10 +194,6 @@ typedef struct {
        void         (* icon_position_changed)    (NautilusCanvasContainer *container,
                                                     NautilusCanvasIconData *data,
                                                     const NautilusCanvasPosition *position);
-       void         (* icon_stretch_started)     (NautilusCanvasContainer *container,
-                                                    NautilusCanvasIconData *data);
-       void         (* icon_stretch_ended)       (NautilusCanvasContainer *container,
-                                                    NautilusCanvasIconData *data);
        int          (* preview)                  (NautilusCanvasContainer *container,
                                                   NautilusCanvasIconData *data,
                                                   gboolean start_flag);
@@ -238,14 +234,6 @@ void              nautilus_canvas_container_begin_loading                 (Nauti
 void              nautilus_canvas_container_end_loading                   (NautilusCanvasContainer  
*container,
                                                                           gboolean                
all_icons_added);
 
-/* control the layout */
-gboolean          nautilus_canvas_container_is_auto_layout                (NautilusCanvasContainer  
*container);
-void              nautilus_canvas_container_set_auto_layout               (NautilusCanvasContainer  
*container,
-                                                                          gboolean                
auto_layout);
-
-gboolean          nautilus_canvas_container_is_keep_aligned               (NautilusCanvasContainer  
*container);
-void              nautilus_canvas_container_set_keep_aligned              (NautilusCanvasContainer  
*container,
-                                                                          gboolean                
keep_aligned);
 void              nautilus_canvas_container_sort                          (NautilusCanvasContainer  
*container);
 void              nautilus_canvas_container_freeze_icon_positions         (NautilusCanvasContainer  
*container);
 
@@ -270,10 +258,6 @@ void              nautilus_canvas_container_set_selection                 (Nauti
                                                                           GList                  *selection);
 GArray    *       nautilus_canvas_container_get_selected_icon_locations   (NautilusCanvasContainer  *view);
 GArray    *       nautilus_canvas_container_get_selected_icons_bounding_box (NautilusCanvasContainer 
*container);
-gboolean          nautilus_canvas_container_has_stretch_handles           (NautilusCanvasContainer  
*container);
-gboolean          nautilus_canvas_container_is_stretched                  (NautilusCanvasContainer  
*container);
-void              nautilus_canvas_container_show_stretch_handles          (NautilusCanvasContainer  
*container);
-void              nautilus_canvas_container_unstretch                     (NautilusCanvasContainer  
*container);
 
 /* options */
 NautilusCanvasZoomLevel nautilus_canvas_container_get_zoom_level                (NautilusCanvasContainer  
*view);
@@ -283,12 +267,6 @@ void              nautilus_canvas_container_set_single_click_mode         (Nauti
                                                                           gboolean                
single_click_mode);
 void              nautilus_canvas_container_enable_linger_selection       (NautilusCanvasContainer  *view,
                                                                           gboolean                enable);
-gboolean          nautilus_canvas_container_get_is_fixed_size             (NautilusCanvasContainer  
*container);
-void              nautilus_canvas_container_set_is_fixed_size             (NautilusCanvasContainer  
*container,
-                                                                          gboolean                
is_fixed_size);
-gboolean          nautilus_canvas_container_get_is_desktop                (NautilusCanvasContainer  
*container);
-void              nautilus_canvas_container_set_is_desktop                (NautilusCanvasContainer  
*container,
-                                                                          gboolean                
is_desktop);
 void              nautilus_canvas_container_reset_scroll_region           (NautilusCanvasContainer  
*container);
 void              nautilus_canvas_container_set_font                      (NautilusCanvasContainer  
*container,
                                                                           const char             *font); 
@@ -301,7 +279,6 @@ char*             nautilus_canvas_container_get_icon_description          (Nauti
                                                                             NautilusCanvasIconData       
*data);
 
 gboolean         nautilus_canvas_container_is_layout_rtl                       (NautilusCanvasContainer  
*container);
-gboolean         nautilus_canvas_container_is_layout_vertical          (NautilusCanvasContainer  *container);
 
 gboolean          nautilus_canvas_container_get_store_layout_timestamps   (NautilusCanvasContainer  
*container);
 void              nautilus_canvas_container_set_store_layout_timestamps   (NautilusCanvasContainer  
*container,
@@ -311,14 +288,10 @@ void              nautilus_canvas_container_widget_to_file_operation_position (N
                                                                               GdkPoint              
*position);
 guint             nautilus_canvas_container_get_icon_size_for_zoom_level (NautilusCanvasZoomLevel 
zoom_level);
 
-#define CANVAS_WIDTH(container,allocation) ((allocation.width          \
-                                            - container->details->left_margin \
-                                            - container->details->right_margin) \
+#define CANVAS_WIDTH(container,allocation) (allocation.width           \
                                            /  EEL_CANVAS (container)->pixels_per_unit)
 
-#define CANVAS_HEIGHT(container,allocation) ((allocation.height                \
-                                             - container->details->top_margin \
-                                             - container->details->bottom_margin) \
+#define CANVAS_HEIGHT(container,allocation) (allocation.height         \
                                             / EEL_CANVAS (container)->pixels_per_unit)
 
 #endif /* NAUTILUS_CANVAS_CONTAINER_H */
diff --git a/src/nautilus-canvas-dnd.c b/src/nautilus-canvas-dnd.c
index 7ef7dd56e..2204720bf 100644
--- a/src/nautilus-canvas-dnd.c
+++ b/src/nautilus-canvas-dnd.c
@@ -537,14 +537,7 @@ get_data_on_first_target_we_support (GtkWidget      *widget,
         gtk_target_list_add_text_targets (drop_types_list_root, NAUTILUS_ICON_DND_TEXT);
     }
 
-    if (nautilus_canvas_container_get_is_desktop (NAUTILUS_CANVAS_CONTAINER (widget)))
-    {
-        list = drop_types_list_root;
-    }
-    else
-    {
-        list = drop_types_list;
-    }
+    list = drop_types_list;
 
     target = gtk_drag_dest_find_target (widget, context, list);
     if (target != GDK_NONE)
@@ -910,75 +903,6 @@ stop_auto_scroll (NautilusCanvasContainer *container)
 }
 
 static void
-handle_local_move (NautilusCanvasContainer *container,
-                   double                   world_x,
-                   double                   world_y)
-{
-    GList *moved_icons, *p;
-    NautilusDragSelectionItem *item;
-    NautilusCanvasIcon *icon;
-    NautilusFile *file;
-    char screen_string[32];
-    GdkScreen *screen;
-    time_t now;
-
-    if (container->details->auto_layout)
-    {
-        return;
-    }
-
-    time (&now);
-
-    /* Move and select the icons. */
-    moved_icons = NULL;
-    for (p = container->details->dnd_info->drag_info.selection_list; p != NULL; p = p->next)
-    {
-        item = p->data;
-
-        icon = nautilus_canvas_container_get_icon_by_uri
-                   (container, item->uri);
-
-        if (icon == NULL)
-        {
-            /* probably dragged from another screen.  Add it to
-             * this screen
-             */
-
-            file = nautilus_file_get_by_uri (item->uri);
-
-            screen = gtk_widget_get_screen (GTK_WIDGET (container));
-            g_snprintf (screen_string, sizeof (screen_string), "%d",
-                        gdk_screen_get_number (screen));
-            nautilus_file_set_metadata (file,
-                                        NAUTILUS_METADATA_KEY_SCREEN,
-                                        NULL, screen_string);
-            nautilus_file_set_time_metadata (file,
-                                             NAUTILUS_METADATA_KEY_ICON_POSITION_TIMESTAMP, now);
-
-            nautilus_canvas_container_add (container, NAUTILUS_CANVAS_ICON_DATA (file));
-
-            icon = nautilus_canvas_container_get_icon_by_uri
-                       (container, item->uri);
-        }
-
-        if (item->got_icon_position)
-        {
-            nautilus_canvas_container_move_icon
-                (container, icon,
-                world_x + item->icon_x, world_y + item->icon_y,
-                icon->scale,
-                TRUE, TRUE, TRUE);
-        }
-        moved_icons = g_list_prepend (moved_icons, icon);
-    }
-    nautilus_canvas_container_select_list_unselect_others
-        (container, moved_icons);
-    /* Might have been moved in a way that requires adjusting scroll region. */
-    nautilus_canvas_container_update_scroll_region (container);
-    g_list_free (moved_icons);
-}
-
-static void
 handle_nonlocal_move (NautilusCanvasContainer *container,
                       GdkDragAction            action,
                       int                      x,
@@ -1220,11 +1144,7 @@ nautilus_canvas_container_receive_dropped_icons (NautilusCanvasContainer *contai
                                   (container, container->details->dnd_info->drag_info.selection_list);
         }
 
-        if (local_move_only)
-        {
-            handle_local_move (container, world_x, world_y);
-        }
-        else
+        if (!local_move_only)
         {
             handle_nonlocal_move (container, real_action, world_x, world_y, drop_target, icon_hit);
         }
@@ -1674,11 +1594,6 @@ check_hover_timer (NautilusCanvasContainer *container,
         return;
     }
 
-    if (nautilus_canvas_container_get_is_desktop (container))
-    {
-        return;
-    }
-
     remove_hover_timer (dnd_info);
 
     settings = gtk_widget_get_settings (GTK_WIDGET (container));
@@ -1980,12 +1895,7 @@ nautilus_canvas_dnd_init (NautilusCanvasContainer *container)
      * (But not a source, as drags starting from this widget will be
      * implemented by dealing with events manually.)
      */
-    n_elements = G_N_ELEMENTS (drop_types);
-    if (!nautilus_canvas_container_get_is_desktop (container))
-    {
-        /* Don't set up rootwindow drop */
-        n_elements -= 1;
-    }
+    n_elements = G_N_ELEMENTS (drop_types) - 1;
     gtk_drag_dest_set (GTK_WIDGET (container),
                        0,
                        drop_types, n_elements,
diff --git a/src/nautilus-canvas-private.h b/src/nautilus-canvas-private.h
index 0f3ad706b..626cc85c1 100644
--- a/src/nautilus-canvas-private.h
+++ b/src/nautilus-canvas-private.h
@@ -130,11 +130,6 @@ struct NautilusCanvasContainerDetails {
        /* Starting icon for keyboard rubberbanding. */
        NautilusCanvasIcon *keyboard_rubberband_start;
 
-       /* Current icon with stretch handles, so we have only one. */
-       NautilusCanvasIcon *stretch_icon;
-       double stretch_initial_x, stretch_initial_y;
-       guint stretch_initial_size;
-       
        /* Last highlighted drop target. */
        NautilusCanvasIcon *drop_target;
 
@@ -201,10 +196,6 @@ struct NautilusCanvasContainerDetails {
 
        /* Mode settings. */
        gboolean single_click_mode;
-       gboolean auto_layout;
-
-       /* Should the container keep icons aligned to a grid */
-       gboolean keep_aligned;
 
         /* Set to TRUE after first allocation has been done */
        gboolean has_been_allocated;
@@ -212,12 +203,6 @@ struct NautilusCanvasContainerDetails {
        int size_allocation_count;
        guint size_allocation_count_id;
        
-       /* Is the container fixed or resizable */
-       gboolean is_fixed_size;
-       
-       /* Is the container for a desktop window */
-       gboolean is_desktop;
-
        /* Ignore the visible area the next time the scroll region is recomputed */
        gboolean reset_scroll_region_trigger;
        
@@ -225,12 +210,6 @@ struct NautilusCanvasContainerDetails {
        double world_x;
        double world_y;
 
-       /* margins to follow, used for the desktop panel avoidance */
-       int left_margin;
-       int right_margin;
-       int top_margin;
-       int bottom_margin;
-
        /* a11y items used by canvas items */
        guint a11y_item_action_idle_handler;
        GQueue* a11y_item_action_queue;
@@ -247,14 +226,6 @@ struct NautilusCanvasContainerDetails {
 /* Private functions shared by mutiple files. */
 NautilusCanvasIcon *nautilus_canvas_container_get_icon_by_uri             (NautilusCanvasContainer 
*container,
                                                                         const char            *uri);
-void          nautilus_canvas_container_move_icon                   (NautilusCanvasContainer *container,
-                                                                      NautilusCanvasIcon      *icon,
-                                                                      int                    x,
-                                                                      int                    y,
-                                                                      double                 scale,
-                                                                      gboolean               raise,
-                                                                      gboolean               snap,
-                                                                      gboolean           update_position);
 void          nautilus_canvas_container_select_list_unselect_others (NautilusCanvasContainer *container,
                                                                     GList                 *icons);
 char *        nautilus_canvas_container_get_icon_uri                (NautilusCanvasContainer *container,
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c
index 5b2683b44..8d2d5dbfd 100644
--- a/src/nautilus-canvas-view.c
+++ b/src/nautilus-canvas-view.c
@@ -56,17 +56,6 @@
 #include <sys/wait.h>
 #include <unistd.h>
 
-enum
-{
-    PROP_SUPPORTS_AUTO_LAYOUT = 1,
-    PROP_SUPPORTS_SCALING,
-    PROP_SUPPORTS_KEEP_ALIGNED,
-    PROP_SUPPORTS_MANUAL_LAYOUT,
-    NUM_PROPERTIES
-};
-
-static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
-
 typedef gboolean (*SortCriterionMatchFunc) (NautilusFile *file);
 
 typedef struct
@@ -96,11 +85,6 @@ typedef struct
 
     GtkWidget *canvas_container;
 
-    gboolean supports_auto_layout;
-    gboolean supports_manual_layout;
-    gboolean supports_scaling;
-    gboolean supports_keep_aligned;
-
     /* FIXME: Needed for async operations. Suposedly we would use cancellable and gtask,
      * sadly gtkclipboard doesn't support that.
      * We follow this pattern for checking validity of the object in the views.
@@ -192,13 +176,11 @@ static void                 nautilus_canvas_view_set_directory_sort_by (Nautilus
                                                                         NautilusFile        *file,
                                                                         const SortCriterion *sort);
 static void                 nautilus_canvas_view_update_click_mode (NautilusCanvasView *canvas_view);
-static gboolean             nautilus_canvas_view_supports_scaling (NautilusCanvasView *canvas_view);
 static void                 nautilus_canvas_view_reveal_selection (NautilusFilesView *view);
 static const SortCriterion *get_sort_criterion_by_metadata_text (const char *metadata_text,
                                                                  gboolean    reversed);
 static const SortCriterion *get_sort_criterion_by_sort_type (NautilusFileSortType sort_type,
                                                              gboolean             reversed);
-static void                 switch_to_manual_layout (NautilusCanvasView *view);
 static const SortCriterion *get_default_sort_order (NautilusFile *file);
 static void                 nautilus_canvas_view_clear (NautilusFilesView *view);
 static void on_clipboard_owner_changed (GtkClipboard *clipboard,
@@ -253,70 +235,6 @@ nautilus_canvas_view_get_canvas_container (NautilusCanvasView *canvas_view)
     return get_canvas_container (canvas_view);
 }
 
-static gboolean
-nautilus_canvas_view_supports_manual_layout (NautilusCanvasView *view)
-{
-    NautilusCanvasViewPrivate *priv;
-
-    g_return_val_if_fail (NAUTILUS_IS_CANVAS_VIEW (view), FALSE);
-
-    priv = nautilus_canvas_view_get_instance_private (view);
-
-    return priv->supports_manual_layout;
-}
-
-static gboolean
-get_stored_icon_position_callback (NautilusCanvasContainer *container,
-                                   NautilusFile            *file,
-                                   NautilusCanvasPosition  *position,
-                                   NautilusCanvasView      *canvas_view)
-{
-    char *position_string, *scale_string;
-    gboolean position_good;
-    char c;
-
-    g_assert (NAUTILUS_IS_CANVAS_CONTAINER (container));
-    g_assert (NAUTILUS_IS_FILE (file));
-    g_assert (position != NULL);
-    g_assert (NAUTILUS_IS_CANVAS_VIEW (canvas_view));
-
-    if (!nautilus_canvas_view_supports_manual_layout (canvas_view))
-    {
-        return FALSE;
-    }
-
-    /* Get the current position of this canvas from the metadata. */
-    position_string = nautilus_file_get_metadata
-                          (file, NAUTILUS_METADATA_KEY_ICON_POSITION, "");
-    position_good = sscanf
-                        (position_string, " %d , %d %c",
-                        &position->x, &position->y, &c) == 2;
-    g_free (position_string);
-
-    /* If it is the desktop directory, maybe the gnome-libs metadata has information about it */
-
-    /* Disable scaling if not on the desktop */
-    if (nautilus_canvas_view_supports_scaling (canvas_view))
-    {
-        /* Get the scale of the canvas from the metadata. */
-        scale_string = nautilus_file_get_metadata
-                           (file, NAUTILUS_METADATA_KEY_ICON_SCALE, "1");
-        position->scale = g_ascii_strtod (scale_string, NULL);
-        if (errno != 0)
-        {
-            position->scale = 1.0;
-        }
-
-        g_free (scale_string);
-    }
-    else
-    {
-        position->scale = 1.0;
-    }
-
-    return position_good;
-}
-
 static void
 update_sort_criterion (NautilusCanvasView  *canvas_view,
                        const SortCriterion *sort,
@@ -355,26 +273,6 @@ update_sort_criterion (NautilusCanvasView  *canvas_view,
     priv->sort = overrided_sort_criterion;
 }
 
-void
-nautilus_canvas_view_clean_up_by_name (NautilusCanvasView *canvas_view)
-{
-    NautilusCanvasContainer *canvas_container;
-
-    canvas_container = get_canvas_container (canvas_view);
-
-    update_sort_criterion (canvas_view, &sort_criteria[0], FALSE);
-
-    nautilus_canvas_container_sort (canvas_container);
-    nautilus_canvas_container_freeze_icon_positions (canvas_container);
-}
-
-static gboolean
-nautilus_canvas_view_using_auto_layout (NautilusCanvasView *canvas_view)
-{
-    return nautilus_canvas_container_is_auto_layout
-               (get_canvas_container (canvas_view));
-}
-
 static void
 list_covers (NautilusCanvasIconData *data,
              gpointer                callback_data)
@@ -497,42 +395,6 @@ nautilus_canvas_view_file_changed (NautilusFilesView *view,
         NAUTILUS_CANVAS_ICON_DATA (file));
 }
 
-static gboolean
-nautilus_canvas_view_supports_auto_layout (NautilusCanvasView *view)
-{
-    NautilusCanvasViewPrivate *priv;
-
-    g_return_val_if_fail (NAUTILUS_IS_CANVAS_VIEW (view), FALSE);
-
-    priv = nautilus_canvas_view_get_instance_private (view);
-
-    return priv->supports_auto_layout;
-}
-
-static gboolean
-nautilus_canvas_view_supports_scaling (NautilusCanvasView *view)
-{
-    NautilusCanvasViewPrivate *priv;
-
-    g_return_val_if_fail (NAUTILUS_IS_CANVAS_VIEW (view), FALSE);
-
-    priv = nautilus_canvas_view_get_instance_private (view);
-
-    return priv->supports_scaling;
-}
-
-static gboolean
-nautilus_canvas_view_supports_keep_aligned (NautilusCanvasView *view)
-{
-    NautilusCanvasViewPrivate *priv;
-
-    g_return_val_if_fail (NAUTILUS_IS_CANVAS_VIEW (view), FALSE);
-
-    priv = nautilus_canvas_view_get_instance_private (view);
-
-    return priv->supports_keep_aligned;
-}
-
 static const SortCriterion *
 nautilus_canvas_view_get_directory_sort_by (NautilusCanvasView *canvas_view,
                                             NautilusFile       *file)
@@ -541,11 +403,6 @@ nautilus_canvas_view_get_directory_sort_by (NautilusCanvasView *canvas_view,
     g_autofree char *sort_by = NULL;
     gboolean reversed;
 
-    if (!nautilus_canvas_view_supports_auto_layout (canvas_view))
-    {
-        return get_sort_criterion_by_metadata_text ("name", FALSE);
-    }
-
     default_sort = get_default_sort_order (file);
     g_return_val_if_fail (default_sort != NULL, NULL);
 
@@ -592,11 +449,6 @@ nautilus_canvas_view_set_directory_sort_by (NautilusCanvasView  *canvas_view,
 {
     const SortCriterion *default_sort_criterion;
 
-    if (!nautilus_canvas_view_supports_auto_layout (canvas_view))
-    {
-        return;
-    }
-
     default_sort_criterion = get_default_sort_order (file);
     g_return_if_fail (default_sort_criterion != NULL);
 
@@ -610,78 +462,6 @@ nautilus_canvas_view_set_directory_sort_by (NautilusCanvasView  *canvas_view,
                                         sort->reverse_order);
 }
 
-static gboolean
-get_default_directory_keep_aligned (void)
-{
-    return TRUE;
-}
-
-static gboolean
-nautilus_canvas_view_get_directory_keep_aligned (NautilusCanvasView *canvas_view,
-                                                 NautilusFile       *file)
-{
-    if (!nautilus_canvas_view_supports_keep_aligned (canvas_view))
-    {
-        return FALSE;
-    }
-
-    return nautilus_file_get_boolean_metadata
-               (file,
-               NAUTILUS_METADATA_KEY_ICON_VIEW_KEEP_ALIGNED,
-               get_default_directory_keep_aligned ());
-}
-
-static void
-nautilus_canvas_view_set_directory_keep_aligned (NautilusCanvasView *canvas_view,
-                                                 NautilusFile       *file,
-                                                 gboolean            keep_aligned)
-{
-    if (!nautilus_canvas_view_supports_keep_aligned (canvas_view))
-    {
-        return;
-    }
-
-    nautilus_file_set_boolean_metadata
-        (file, NAUTILUS_METADATA_KEY_ICON_VIEW_KEEP_ALIGNED,
-        get_default_directory_keep_aligned (),
-        keep_aligned);
-}
-
-static gboolean
-nautilus_canvas_view_get_directory_auto_layout (NautilusCanvasView *canvas_view,
-                                                NautilusFile       *file)
-{
-    if (!nautilus_canvas_view_supports_auto_layout (canvas_view))
-    {
-        return FALSE;
-    }
-
-    if (!nautilus_canvas_view_supports_manual_layout (canvas_view))
-    {
-        return TRUE;
-    }
-
-    return nautilus_file_get_boolean_metadata
-               (file, NAUTILUS_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT, TRUE);
-}
-
-static void
-nautilus_canvas_view_set_directory_auto_layout (NautilusCanvasView *canvas_view,
-                                                NautilusFile       *file,
-                                                gboolean            auto_layout)
-{
-    if (!nautilus_canvas_view_supports_auto_layout (canvas_view) ||
-        !nautilus_canvas_view_supports_manual_layout (canvas_view))
-    {
-        return;
-    }
-
-    nautilus_file_set_boolean_metadata
-        (file, NAUTILUS_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT,
-        TRUE,
-        auto_layout);
-}
-
 static const SortCriterion *
 get_sort_criterion_by_metadata_text (const char *metadata_text,
                                      gboolean    reversed)
@@ -772,18 +552,6 @@ nautilus_canvas_view_begin_loading (NautilusFilesView *view)
     sort = nautilus_canvas_view_get_directory_sort_by (canvas_view, file);
     update_sort_criterion (canvas_view, sort, FALSE);
 
-    nautilus_canvas_container_set_keep_aligned
-        (get_canvas_container (canvas_view),
-        nautilus_canvas_view_get_directory_keep_aligned (canvas_view, file));
-
-    /* We must set auto-layout last, because it invokes the layout_changed
-     * callback, which works incorrectly if the other layout criteria are
-     * not already set up properly (see bug 6500, e.g.)
-     */
-    nautilus_canvas_container_set_auto_layout
-        (get_canvas_container (canvas_view),
-        nautilus_canvas_view_get_directory_auto_layout (canvas_view, file));
-
     /* We could have changed to the trash directory or to searching, and then
      * we need to update the menus */
     nautilus_files_view_update_context_menus (view);
@@ -984,28 +752,6 @@ nautilus_canvas_view_get_selection (NautilusFilesView *view)
 }
 
 static void
-action_keep_aligned (GSimpleAction *action,
-                     GVariant      *state,
-                     gpointer       user_data)
-{
-    NautilusFile *file;
-    NautilusCanvasView *canvas_view;
-    gboolean keep_aligned;
-
-    canvas_view = NAUTILUS_CANVAS_VIEW (user_data);
-    file = nautilus_files_view_get_directory_as_file (NAUTILUS_FILES_VIEW (canvas_view));
-    keep_aligned = g_variant_get_boolean (state);
-
-    nautilus_canvas_view_set_directory_keep_aligned (canvas_view,
-                                                     file,
-                                                     keep_aligned);
-    nautilus_canvas_container_set_keep_aligned (get_canvas_container (canvas_view),
-                                                keep_aligned);
-
-    g_simple_action_set_state (action, state);
-}
-
-static void
 action_sort_order_changed (GSimpleAction *action,
                            GVariant      *value,
                            gpointer       user_data)
@@ -1019,20 +765,11 @@ action_sort_order_changed (GSimpleAction *action,
     sort_criterion = get_sort_criterion_by_action_target_name (target_name);
 
     g_assert (sort_criterion != NULL);
-    /* Note that id might be a toggle item.
-     * Ignore non-sort ids so that they don't cause sorting.
-     */
-    if (sort_criterion->sort_type == NAUTILUS_FILE_SORT_NONE)
-    {
-        switch_to_manual_layout (user_data);
-    }
-    else
-    {
-        update_sort_criterion (user_data, sort_criterion, TRUE);
 
-        nautilus_canvas_container_sort (get_canvas_container (user_data));
-        nautilus_canvas_view_reveal_selection (NAUTILUS_FILES_VIEW (user_data));
-    }
+    update_sort_criterion (user_data, sort_criterion, TRUE);
+
+    nautilus_canvas_container_sort (get_canvas_container (user_data));
+    nautilus_canvas_view_reveal_selection (NAUTILUS_FILES_VIEW (user_data));
 
     g_simple_action_set_state (action, value);
 }
@@ -1061,48 +798,8 @@ action_zoom_to_level (GSimpleAction *action,
     }
 }
 
-static void
-switch_to_manual_layout (NautilusCanvasView *canvas_view)
-{
-    NautilusCanvasViewPrivate *priv;
-
-    priv = nautilus_canvas_view_get_instance_private (canvas_view);
-
-    if (!nautilus_canvas_view_using_auto_layout (canvas_view) ||
-        !nautilus_files_view_is_editable (NAUTILUS_FILES_VIEW (canvas_view)))
-    {
-        return;
-    }
-
-    priv->sort = &sort_criteria[0];
-
-    nautilus_canvas_container_set_auto_layout
-        (get_canvas_container (canvas_view), FALSE);
-}
-
-static void
-layout_changed_callback (NautilusCanvasContainer *container,
-                         NautilusCanvasView      *canvas_view)
-{
-    NautilusFile *file;
-
-    g_assert (NAUTILUS_IS_CANVAS_VIEW (canvas_view));
-    g_assert (container == get_canvas_container (canvas_view));
-
-    file = nautilus_files_view_get_directory_as_file (NAUTILUS_FILES_VIEW (canvas_view));
-
-    if (file != NULL)
-    {
-        nautilus_canvas_view_set_directory_auto_layout
-            (canvas_view,
-            file,
-            nautilus_canvas_view_using_auto_layout (canvas_view));
-    }
-}
-
 const GActionEntry canvas_view_entries[] =
 {
-    { "keep-aligned", NULL, NULL, "true", action_keep_aligned },
     { "sort", NULL, "s", "'name'", action_sort_order_changed },
     { "zoom-to-level", NULL, NULL, "1", action_zoom_to_level }
 };
@@ -1168,8 +865,8 @@ static void
 nautilus_canvas_view_update_actions_state (NautilusFilesView *view)
 {
     GActionGroup *view_action_group;
+    GVariant *sort_state;
     GAction *action;
-    gboolean keep_aligned;
     NautilusCanvasView *canvas_view;
     NautilusCanvasViewPrivate *priv;
 
@@ -1179,45 +876,33 @@ nautilus_canvas_view_update_actions_state (NautilusFilesView *view)
     NAUTILUS_FILES_VIEW_CLASS (nautilus_canvas_view_parent_class)->update_actions_state (view);
 
     view_action_group = nautilus_files_view_get_action_group (view);
-    if (nautilus_canvas_view_supports_auto_layout (canvas_view))
-    {
-        GVariant *sort_state;
-
-        /* When we change the sort action state, even using the same value, it triggers
-         * the sort action changed handler, which reveals the selection, since we expect
-         * the selection to be visible when the user changes the sort order. But we may
-         * need to update the actions state for others reason than an actual sort change,
-         * so we need to prevent to trigger the sort action changed handler for those cases.
-         * To achieve this, check if the action state value actually changed before setting
-         * it
-         */
-        sort_state = g_action_group_get_action_state (view_action_group, "sort");
-
-        if (g_strcmp0 (g_variant_get_string (sort_state, NULL),
-                       priv->sort->action_target_name) != 0)
-        {
-            g_action_group_change_action_state (view_action_group,
-                                                "sort",
-                                                g_variant_new_string (priv->sort->action_target_name));
-        }
 
-        g_variant_unref (sort_state);
+    /* When we change the sort action state, even using the same value, it triggers
+     * the sort action changed handler, which reveals the selection, since we expect
+     * the selection to be visible when the user changes the sort order. But we may
+     * need to update the actions state for others reason than an actual sort change,
+     * so we need to prevent to trigger the sort action changed handler for those cases.
+     * To achieve this, check if the action state value actually changed before setting
+     * it
+     */
+    sort_state = g_action_group_get_action_state (view_action_group, "sort");
+
+    if (g_strcmp0 (g_variant_get_string (sort_state, NULL),
+                   priv->sort->action_target_name) != 0)
+    {
+        g_action_group_change_action_state (view_action_group,
+                                            "sort",
+                                            g_variant_new_string (priv->sort->action_target_name));
     }
 
     action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), "sort");
     g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
                                  !showing_recent_directory (view) &&
                                  !showing_search_directory (view));
-    action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), "keep-aligned");
-    g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
-                                 priv->supports_keep_aligned);
-    if (priv->supports_keep_aligned)
-    {
-        keep_aligned = nautilus_canvas_container_is_keep_aligned (get_canvas_container (canvas_view));
-        g_action_change_state (action, g_variant_new_boolean (keep_aligned));
-    }
 
     update_sort_action_state_hint (canvas_view);
+
+    g_variant_unref (sort_state);
 }
 
 static void
@@ -1308,14 +993,6 @@ nautilus_canvas_view_invert_selection (NautilusFilesView *view)
         (get_canvas_container (NAUTILUS_CANVAS_VIEW (view)));
 }
 
-static gboolean
-nautilus_canvas_view_using_manual_layout (NautilusFilesView *view)
-{
-    g_return_val_if_fail (NAUTILUS_IS_CANVAS_VIEW (view), FALSE);
-
-    return !nautilus_canvas_view_using_auto_layout (NAUTILUS_CANVAS_VIEW (view));
-}
-
 static void
 nautilus_canvas_view_widget_to_file_operation_position (NautilusFilesView *view,
                                                         GdkPoint          *position)
@@ -1502,25 +1179,12 @@ icon_position_changed_callback (NautilusCanvasContainer      *container,
                                 const NautilusCanvasPosition *position,
                                 NautilusCanvasView           *canvas_view)
 {
-    char *position_string;
     char scale_string[G_ASCII_DTOSTR_BUF_SIZE];
 
     g_assert (NAUTILUS_IS_CANVAS_VIEW (canvas_view));
     g_assert (container == get_canvas_container (canvas_view));
     g_assert (NAUTILUS_IS_FILE (file));
 
-    /* Store the new position of the canvas in the metadata. */
-    if (!nautilus_canvas_view_using_auto_layout (canvas_view))
-    {
-        position_string = g_strdup_printf
-                              ("%d,%d", position->x, position->y);
-        nautilus_file_set_metadata
-            (file, NAUTILUS_METADATA_KEY_ICON_POSITION,
-            NULL, position_string);
-        g_free (position_string);
-    }
-
-
     g_ascii_dtostr (scale_string, sizeof (scale_string), position->scale);
     nautilus_file_set_metadata
         (file, NAUTILUS_METADATA_KEY_ICON_SCALE,
@@ -1621,11 +1285,7 @@ nautilus_canvas_view_sort_directories_first_changed (NautilusFilesView *director
 
     canvas_view = NAUTILUS_CANVAS_VIEW (directory_view);
 
-    if (nautilus_canvas_view_using_auto_layout (canvas_view))
-    {
-        nautilus_canvas_container_sort
-            (get_canvas_container (canvas_view));
-    }
+    nautilus_canvas_container_sort (get_canvas_container (canvas_view));
 }
 
 static gboolean
@@ -1798,17 +1458,6 @@ initialize_canvas_container (NautilusCanvasView      *canvas_view,
                              G_CALLBACK (canvas_view_get_container_uri), canvas_view, 0);
     g_signal_connect_object (canvas_container, "can-accept-item",
                              G_CALLBACK (canvas_view_can_accept_item), canvas_view, 0);
-    g_signal_connect_object (canvas_container, "get-stored-icon-position",
-                             G_CALLBACK (get_stored_icon_position_callback), canvas_view, 0);
-    g_signal_connect_object (canvas_container, "layout-changed",
-                             G_CALLBACK (layout_changed_callback), canvas_view, 0);
-    g_signal_connect_object (canvas_container, "icon-stretch-started",
-                             G_CALLBACK (nautilus_files_view_update_context_menus), canvas_view,
-                             G_CONNECT_SWAPPED);
-    g_signal_connect_object (canvas_container, "icon-stretch-ended",
-                             G_CALLBACK (nautilus_files_view_update_context_menus), canvas_view,
-                             G_CONNECT_SWAPPED);
-
     g_signal_connect_object (canvas_container, "get-stored-layout-timestamp",
                              G_CALLBACK (get_stored_layout_timestamp), canvas_view, 0);
     g_signal_connect_object (canvas_container, "store-layout-timestamp",
@@ -1935,52 +1584,6 @@ nautilus_canvas_view_get_id (NautilusFilesView *view)
 }
 
 static void
-nautilus_canvas_view_set_property (GObject      *object,
-                                   guint         prop_id,
-                                   const GValue *value,
-                                   GParamSpec   *pspec)
-{
-    NautilusCanvasView *canvas_view;
-    NautilusCanvasViewPrivate *priv;
-
-    canvas_view = NAUTILUS_CANVAS_VIEW (object);
-    priv = nautilus_canvas_view_get_instance_private (canvas_view);
-
-    switch (prop_id)
-    {
-        case PROP_SUPPORTS_AUTO_LAYOUT:
-        {
-            priv->supports_auto_layout = g_value_get_boolean (value);
-        }
-        break;
-
-        case PROP_SUPPORTS_MANUAL_LAYOUT:
-        {
-            priv->supports_manual_layout = g_value_get_boolean (value);
-        }
-        break;
-
-        case PROP_SUPPORTS_SCALING:
-        {
-            priv->supports_scaling = g_value_get_boolean (value);
-        }
-        break;
-
-        case PROP_SUPPORTS_KEEP_ALIGNED:
-        {
-            priv->supports_keep_aligned = g_value_get_boolean (value);
-        }
-        break;
-
-        default:
-        {
-            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-        }
-        break;
-    }
-}
-
-static void
 nautilus_canvas_view_dispose (GObject *object)
 {
     NautilusCanvasView *canvas_view;
@@ -2014,7 +1617,6 @@ nautilus_canvas_view_class_init (NautilusCanvasViewClass *klass)
     nautilus_files_view_class = NAUTILUS_FILES_VIEW_CLASS (klass);
     oclass = G_OBJECT_CLASS (klass);
 
-    oclass->set_property = nautilus_canvas_view_set_property;
     oclass->dispose = nautilus_canvas_view_dispose;
 
     GTK_WIDGET_CLASS (klass)->destroy = nautilus_canvas_view_destroy;
@@ -2046,42 +1648,10 @@ nautilus_canvas_view_class_init (NautilusCanvasViewClass *klass)
     nautilus_files_view_class->click_policy_changed = nautilus_canvas_view_click_policy_changed;
     nautilus_files_view_class->update_actions_state = nautilus_canvas_view_update_actions_state;
     nautilus_files_view_class->sort_directories_first_changed = 
nautilus_canvas_view_sort_directories_first_changed;
-    nautilus_files_view_class->using_manual_layout = nautilus_canvas_view_using_manual_layout;
     nautilus_files_view_class->widget_to_file_operation_position = 
nautilus_canvas_view_widget_to_file_operation_position;
     nautilus_files_view_class->get_view_id = nautilus_canvas_view_get_id;
     nautilus_files_view_class->get_first_visible_file = canvas_view_get_first_visible_file;
     nautilus_files_view_class->scroll_to_file = canvas_view_scroll_to_file;
-
-    properties[PROP_SUPPORTS_AUTO_LAYOUT] =
-        g_param_spec_boolean ("supports-auto-layout",
-                              "Supports auto layout",
-                              "Whether this view supports auto layout",
-                              TRUE,
-                              G_PARAM_WRITABLE |
-                              G_PARAM_CONSTRUCT_ONLY);
-    properties[PROP_SUPPORTS_MANUAL_LAYOUT] =
-        g_param_spec_boolean ("supports-manual-layout",
-                              "Supports manual layout",
-                              "Whether this view supports manual layout",
-                              FALSE,
-                              G_PARAM_WRITABLE |
-                              G_PARAM_CONSTRUCT_ONLY);
-    properties[PROP_SUPPORTS_SCALING] =
-        g_param_spec_boolean ("supports-scaling",
-                              "Supports scaling",
-                              "Whether this view supports scaling",
-                              FALSE,
-                              G_PARAM_WRITABLE |
-                              G_PARAM_CONSTRUCT_ONLY);
-    properties[PROP_SUPPORTS_KEEP_ALIGNED] =
-        g_param_spec_boolean ("supports-keep-aligned",
-                              "Supports keep aligned",
-                              "Whether this view supports keep aligned",
-                              FALSE,
-                              G_PARAM_WRITABLE |
-                              G_PARAM_CONSTRUCT_ONLY);
-
-    g_object_class_install_properties (oclass, NUM_PROPERTIES, properties);
 }
 
 static void
diff --git a/src/nautilus-canvas-view.h b/src/nautilus-canvas-view.h
index 799cc932d..f307936cd 100644
--- a/src/nautilus-canvas-view.h
+++ b/src/nautilus-canvas-view.h
@@ -45,7 +45,6 @@ int     nautilus_canvas_view_compare_files (NautilusCanvasView   *canvas_view,
                                          NautilusFile *b);
 void    nautilus_canvas_view_filter_by_screen (NautilusCanvasView *canvas_view,
                                             gboolean filter);
-void    nautilus_canvas_view_clean_up_by_name (NautilusCanvasView *canvas_view);
 
 NautilusFilesView * nautilus_canvas_view_new (NautilusWindowSlot *slot);
 
diff --git a/src/nautilus-directory.c b/src/nautilus-directory.c
index 26a5c4b76..05fb016c4 100644
--- a/src/nautilus-directory.c
+++ b/src/nautilus-directory.c
@@ -1704,11 +1704,6 @@ nautilus_directory_schedule_position_set (GList *position_setting_list)
         {
             str[0] = 0;
         }
-        nautilus_file_set_metadata
-            (file,
-            NAUTILUS_METADATA_KEY_ICON_POSITION,
-            NULL,
-            str);
 
         if (item->set)
         {
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index da922e568..615041e81 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -697,14 +697,6 @@ nautilus_files_view_reveal_selection (NautilusFilesView *view)
     NAUTILUS_FILES_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->reveal_selection (view);
 }
 
-static gboolean
-nautilus_files_view_using_manual_layout (NautilusFilesView *view)
-{
-    g_return_val_if_fail (NAUTILUS_IS_FILES_VIEW (view), FALSE);
-
-    return NAUTILUS_FILES_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->using_manual_layout (view);
-}
-
 /**
  * nautilus_files_view_get_toolbar_menu_sections:
  * @view: a #NautilusFilesView
@@ -1943,29 +1935,6 @@ new_folder_data_new (NautilusFilesView *directory_view,
     return data;
 }
 
-static GdkPoint *
-context_menu_to_file_operation_position (NautilusFilesView *view)
-{
-    NautilusFilesViewPrivate *priv;
-
-    g_return_val_if_fail (NAUTILUS_IS_FILES_VIEW (view), NULL);
-
-    priv = nautilus_files_view_get_instance_private (view);
-
-    if (nautilus_files_view_using_manual_layout (view)
-        && priv->context_menu_position.x >= 0
-        && priv->context_menu_position.y >= 0)
-    {
-        NAUTILUS_FILES_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->widget_to_file_operation_position
-            (view, &priv->context_menu_position);
-        return &priv->context_menu_position;
-    }
-    else
-    {
-        return NULL;
-    }
-}
-
 static GdkRectangle *
 nautilus_files_view_compute_rename_popover_pointing_to (NautilusFilesView *view)
 {
@@ -2050,7 +2019,6 @@ new_folder_dialog_controller_on_name_accepted (NautilusFileNameWidgetController
     NautilusFilesView *view;
     NautilusFilesViewPrivate *priv;
     NewFolderData *data;
-    GdkPoint *position = NULL;
     g_autofree gchar *parent_uri = NULL;
     g_autofree gchar *name = NULL;
     NautilusFile *parent;
@@ -2074,12 +2042,8 @@ new_folder_dialog_controller_on_name_accepted (NautilusFileNameWidgetController
 
     parent_uri = nautilus_files_view_get_backing_uri (view);
     parent = nautilus_file_get_by_uri (parent_uri);
-    if (eel_uri_is_desktop (parent_uri))
-    {
-        position = context_menu_to_file_operation_position (view);
-    }
     nautilus_file_operations_new_folder (GTK_WIDGET (view),
-                                         position, parent_uri, name,
+                                         NULL, parent_uri, name,
                                          new_folder_done, data);
 
     g_clear_object (&priv->new_folder_controller);
@@ -2405,13 +2369,8 @@ nautilus_files_view_new_file_with_initial_contents (NautilusFilesView *view,
 
     data = setup_new_folder_data (view);
 
-    if (pos == NULL)
-    {
-        pos = context_menu_to_file_operation_position (view);
-    }
-
     nautilus_file_operations_new_file (GTK_WIDGET (view),
-                                       pos, parent_uri, filename,
+                                       NULL, parent_uri, filename,
                                        initial_contents, length,
                                        new_folder_done, data);
 }
@@ -2421,7 +2380,6 @@ nautilus_files_view_new_file (NautilusFilesView *directory_view,
                               const char        *parent_uri,
                               NautilusFile      *source)
 {
-    GdkPoint *pos;
     NewFolderData *data;
     char *source_uri;
     char *container_uri;
@@ -2447,14 +2405,12 @@ nautilus_files_view_new_file (NautilusFilesView *directory_view,
 
     g_return_if_fail (nautilus_file_is_local (source));
 
-    pos = context_menu_to_file_operation_position (directory_view);
-
     data = setup_new_folder_data (directory_view);
 
     source_uri = nautilus_file_get_uri (source);
 
     nautilus_file_operations_new_file_from_template (GTK_WIDGET (directory_view),
-                                                     pos,
+                                                     NULL,
                                                      parent_uri != NULL ? parent_uri : container_uri,
                                                      NULL,
                                                      source_uri,
@@ -8869,14 +8825,6 @@ nautilus_files_view_should_show_file (NautilusFilesView *view,
                                       priv->show_foreign_files);
 }
 
-static gboolean
-real_using_manual_layout (NautilusFilesView *view)
-{
-    g_return_val_if_fail (NAUTILUS_IS_FILES_VIEW (view), FALSE);
-
-    return FALSE;
-}
-
 void
 nautilus_files_view_ignore_hidden_file_preferences (NautilusFilesView *view)
 {
@@ -9587,7 +9535,6 @@ nautilus_files_view_class_init (NautilusFilesViewClass *klass)
                       G_TYPE_NONE, 0);
 
     klass->get_backing_uri = real_get_backing_uri;
-    klass->using_manual_layout = real_using_manual_layout;
     klass->get_window = nautilus_files_view_get_window;
     klass->update_context_menus = real_update_context_menus;
     klass->update_actions_state = real_update_actions_state;
diff --git a/src/nautilus-files-view.h b/src/nautilus-files-view.h
index 7689f98d7..22956dd60 100644
--- a/src/nautilus-files-view.h
+++ b/src/nautilus-files-view.h
@@ -196,13 +196,6 @@ struct _NautilusFilesViewClass {
                                               NautilusFile      *a,
                                               NautilusFile      *b);
 
-        /* using_manual_layout is a function pointer that subclasses may
-         * override to control whether or not items can be freely positioned
-         * on the user-visible area.
-         * Note that this value is not guaranteed to be constant within the
-         * view's lifecycle. */
-        gboolean (* using_manual_layout)     (NautilusFilesView *view);
-
         /* is_empty is a function pointer that subclasses must
          * override to report whether the view contains any items.
          */
diff --git a/src/nautilus-global-preferences.c b/src/nautilus-global-preferences.c
index 94326b94a..d24db28c3 100644
--- a/src/nautilus-global-preferences.c
+++ b/src/nautilus-global-preferences.c
@@ -36,7 +36,6 @@ GSettings *nautilus_preferences;
 GSettings *nautilus_compression_preferences;
 GSettings *nautilus_icon_view_preferences;
 GSettings *nautilus_list_view_preferences;
-GSettings *nautilus_desktop_preferences;
 GSettings *nautilus_window_state;
 GSettings *gtk_filechooser_preferences;
 GSettings *gnome_lockdown_preferences;
@@ -61,7 +60,6 @@ nautilus_global_preferences_init (void)
     nautilus_window_state = g_settings_new ("org.gnome.nautilus.window-state");
     nautilus_icon_view_preferences = g_settings_new ("org.gnome.nautilus.icon-view");
     nautilus_list_view_preferences = g_settings_new ("org.gnome.nautilus.list-view");
-    nautilus_desktop_preferences = g_settings_new ("org.gnome.nautilus.desktop");
     /* Some settings such as show hidden files are shared between Nautilus and GTK file chooser */
     gtk_filechooser_preferences = g_settings_new_with_path ("org.gtk.Settings.FileChooser",
                                                             "/org/gtk/settings/file-chooser/");
diff --git a/src/nautilus-global-preferences.h b/src/nautilus-global-preferences.h
index 7c19ba1fd..3bfa87731 100644
--- a/src/nautilus-global-preferences.h
+++ b/src/nautilus-global-preferences.h
@@ -101,7 +101,6 @@ typedef enum
 
 /* ellipsization preferences */
 #define NAUTILUS_PREFERENCES_ICON_VIEW_TEXT_ELLIPSIS_LIMIT             "text-ellipsis-limit"
-#define NAUTILUS_PREFERENCES_DESKTOP_TEXT_ELLIPSIS_LIMIT               "text-ellipsis-limit"
 
 /* List View */
 #define NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_ZOOM_LEVEL              "default-zoom-level"
@@ -139,25 +138,12 @@ typedef enum
        NAUTILUS_SIMPLE_SEARCH_BAR
 } NautilusSearchBarMode;
 
-#define NAUTILUS_PREFERENCES_DESKTOP_FONT                 "font"
-#define NAUTILUS_PREFERENCES_DESKTOP_HOME_VISIBLE          "home-icon-visible"
-#define NAUTILUS_PREFERENCES_DESKTOP_HOME_NAME             "home-icon-name"
-#define NAUTILUS_PREFERENCES_DESKTOP_TRASH_VISIBLE         "trash-icon-visible"
-#define NAUTILUS_PREFERENCES_DESKTOP_TRASH_NAME            "trash-icon-name"
-#define NAUTILUS_PREFERENCES_DESKTOP_VOLUMES_VISIBLE      "volumes-visible"
-#define NAUTILUS_PREFERENCES_DESKTOP_NETWORK_VISIBLE       "network-icon-visible"
-#define NAUTILUS_PREFERENCES_DESKTOP_NETWORK_NAME          "network-icon-name"
-#define NAUTILUS_PREFERENCES_DESKTOP_BACKGROUND_FADE       "background-fade"
-
 /* bulk rename utility */
 #define NAUTILUS_PREFERENCES_BULK_RENAME_TOOL              "bulk-rename-tool"
 
 /* Lockdown */
 #define NAUTILUS_PREFERENCES_LOCKDOWN_COMMAND_LINE         "disable-command-line"
 
-/* Desktop background */
-#define NAUTILUS_PREFERENCES_SHOW_DESKTOP                 "show-desktop-icons"
-
 /* Recent files */
 #define NAUTILUS_PREFERENCES_RECENT_FILES_ENABLED          "remember-recent-files"
 
diff --git a/src/nautilus-icon-names.h b/src/nautilus-icon-names.h
index 64574662c..f6f75a953 100644
--- a/src/nautilus-icon-names.h
+++ b/src/nautilus-icon-names.h
@@ -21,13 +21,6 @@
 #define NAUTILUS_ICON_FOLDER_TEMPLATES  "folder-templates-symbolic"
 #define NAUTILUS_ICON_FOLDER_VIDEOS     "folder-videos-symbolic"
 
-/* Icons for desktop */
-#define NAUTILUS_DESKTOP_ICON_DESKTOP    "user-desktop"
-#define NAUTILUS_DESKTOP_ICON_TRASH      "user-trash"
-#define NAUTILUS_DESKTOP_ICON_TRASH_FULL "user-trash-full"
-#define NAUTILUS_DESKTOP_ICON_HOME       "user-home"
-#define NAUTILUS_DESKTOP_ICON_NETWORK    "network-workgroup"
-
 /* Fullcolor icons */
 #define NAUTILUS_ICON_FULLCOLOR_FOLDER              "folder"
 #define NAUTILUS_ICON_FULLCOLOR_FOLDER_REMOTE       "folder-remote"
diff --git a/src/nautilus-lib-self-check-functions.h b/src/nautilus-lib-self-check-functions.h
index c326c60fd..77dcd2152 100644
--- a/src/nautilus-lib-self-check-functions.h
+++ b/src/nautilus-lib-self-check-functions.h
@@ -40,7 +40,6 @@ void nautilus_run_lib_self_checks (void);
        macro (nautilus_self_check_file_operations) \
        macro (nautilus_self_check_directory) \
        macro (nautilus_self_check_file) \
-       macro (nautilus_self_check_canvas_container) \
 /* Add new self-check functions to the list above this line. */
 
 /* Generate prototypes for all the functions. */
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index 89e54cb09..e92c2d75c 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -3489,14 +3489,6 @@ nautilus_list_view_compare_files (NautilusFilesView *view,
     return nautilus_list_model_compare_func (list_view->details->model, file1, file2);
 }
 
-static gboolean
-nautilus_list_view_using_manual_layout (NautilusFilesView *view)
-{
-    g_return_val_if_fail (NAUTILUS_IS_LIST_VIEW (view), FALSE);
-
-    return FALSE;
-}
-
 static void
 nautilus_list_view_dispose (GObject *object)
 {
@@ -3803,7 +3795,6 @@ nautilus_list_view_class_init (NautilusListViewClass *class)
     nautilus_files_view_class->compare_files = nautilus_list_view_compare_files;
     nautilus_files_view_class->sort_directories_first_changed = 
nautilus_list_view_sort_directories_first_changed;
     nautilus_files_view_class->end_file_changes = nautilus_list_view_end_file_changes;
-    nautilus_files_view_class->using_manual_layout = nautilus_list_view_using_manual_layout;
     nautilus_files_view_class->get_view_id = nautilus_list_view_get_id;
     nautilus_files_view_class->get_first_visible_file = nautilus_list_view_get_first_visible_file;
     nautilus_files_view_class->scroll_to_file = list_view_scroll_to_file;
diff --git a/src/nautilus-metadata.c b/src/nautilus-metadata.c
index bee04e7ca..98c760863 100644
--- a/src/nautilus-metadata.c
+++ b/src/nautilus-metadata.c
@@ -27,9 +27,7 @@ static char *used_metadata_names[] =
     NAUTILUS_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT,
     NAUTILUS_METADATA_KEY_ICON_VIEW_SORT_BY,
     NAUTILUS_METADATA_KEY_ICON_VIEW_SORT_REVERSED,
-    NAUTILUS_METADATA_KEY_ICON_VIEW_KEEP_ALIGNED,
     NAUTILUS_METADATA_KEY_ICON_VIEW_LAYOUT_TIMESTAMP,
-    NAUTILUS_METADATA_KEY_DESKTOP_ICON_SIZE,
     NAUTILUS_METADATA_KEY_LIST_VIEW_SORT_COLUMN,
     NAUTILUS_METADATA_KEY_LIST_VIEW_SORT_REVERSED,
     NAUTILUS_METADATA_KEY_LIST_VIEW_VISIBLE_COLUMNS,
@@ -44,7 +42,6 @@ static char *used_metadata_names[] =
     NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE,
     NAUTILUS_METADATA_KEY_SIDEBAR_BUTTONS,
     NAUTILUS_METADATA_KEY_ANNOTATION,
-    NAUTILUS_METADATA_KEY_ICON_POSITION,
     NAUTILUS_METADATA_KEY_ICON_POSITION_TIMESTAMP,
     NAUTILUS_METADATA_KEY_ICON_SCALE,
     NAUTILUS_METADATA_KEY_CUSTOM_ICON,
diff --git a/src/nautilus-metadata.h b/src/nautilus-metadata.h
index c4a303ec5..28a1a61f5 100644
--- a/src/nautilus-metadata.h
+++ b/src/nautilus-metadata.h
@@ -37,11 +37,8 @@
 #define NAUTILUS_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT            "nautilus-icon-view-auto-layout"
 #define NAUTILUS_METADATA_KEY_ICON_VIEW_SORT_BY                "nautilus-icon-view-sort-by"
 #define NAUTILUS_METADATA_KEY_ICON_VIEW_SORT_REVERSED          "nautilus-icon-view-sort-reversed"
-#define NAUTILUS_METADATA_KEY_ICON_VIEW_KEEP_ALIGNED            "nautilus-icon-view-keep-aligned"
 #define NAUTILUS_METADATA_KEY_ICON_VIEW_LAYOUT_TIMESTAMP       "nautilus-icon-view-layout-timestamp"
 
-#define NAUTILUS_METADATA_KEY_DESKTOP_ICON_SIZE           "nautilus-desktop-icon-size"
-
 #define NAUTILUS_METADATA_KEY_LIST_VIEW_SORT_COLUMN            "nautilus-list-view-sort-column"
 #define NAUTILUS_METADATA_KEY_LIST_VIEW_SORT_REVERSED          "nautilus-list-view-sort-reversed"
 #define NAUTILUS_METADATA_KEY_LIST_VIEW_VISIBLE_COLUMNS        "nautilus-list-view-visible-columns"
@@ -58,7 +55,6 @@
 #define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE         "nautilus-sidebar-background-image"
 #define NAUTILUS_METADATA_KEY_SIDEBAR_BUTTONS                  "nautilus-sidebar-buttons"
 
-#define NAUTILUS_METADATA_KEY_ICON_POSITION                    "nautilus-icon-position"
 #define NAUTILUS_METADATA_KEY_ICON_POSITION_TIMESTAMP          "nautilus-icon-position-timestamp"
 #define NAUTILUS_METADATA_KEY_ANNOTATION                       "annotation"
 #define NAUTILUS_METADATA_KEY_ICON_SCALE                       "icon-scale"
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
index 40ad2554d..173f3dfd0 100644
--- a/src/nautilus-properties-window.c
+++ b/src/nautilus-properties-window.c
@@ -23,7 +23,6 @@
 
 #include "nautilus-properties-window.h"
 
-#include "nautilus-desktop-item-properties.h"
 #include "nautilus-error-reporting.h"
 #include "nautilus-mime-actions.h"
 
@@ -3155,22 +3154,6 @@ create_basic_page (NautilusPropertiesWindow *window)
         gtk_widget_grab_focus (GTK_WIDGET (window->details->name_field));
     }
 
-    if (nautilus_desktop_item_properties_should_show (window->details->target_files))
-    {
-        GtkSizeGroup *label_size_group;
-        GtkWidget *box;
-
-        label_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
-        gtk_size_group_add_widget (label_size_group,
-                                   GTK_WIDGET (window->details->name_label));
-        box = nautilus_desktop_item_properties_make_box (label_size_group,
-                                                         window->details->target_files);
-
-        gtk_grid_attach_next_to (window->details->basic_grid, box,
-                                 GTK_WIDGET (window->details->name_label),
-                                 GTK_POS_BOTTOM, 2, 1);
-    }
-
     if (should_show_file_type (window))
     {
         append_title_and_ellipsizing_value (window, grid,
diff --git a/src/nautilus-view-icon-controller.c b/src/nautilus-view-icon-controller.c
index f6199ba13..1b7007982 100644
--- a/src/nautilus-view-icon-controller.c
+++ b/src/nautilus-view-icon-controller.c
@@ -705,12 +705,6 @@ real_compare_files (NautilusFilesView *files_view,
     return 0;
 }
 
-static gboolean
-real_using_manual_layout (NautilusFilesView *files_view)
-{
-    return FALSE;
-}
-
 static void
 real_end_loading (NautilusFilesView *files_view,
                   gboolean           all_files_seen)
@@ -912,7 +906,6 @@ nautilus_view_icon_controller_class_init (NautilusViewIconControllerClass *klass
     files_view_class->compare_files = real_compare_files;
     files_view_class->sort_directories_first_changed = real_sort_directories_first_changed;
     files_view_class->end_file_changes = real_end_file_changes;
-    files_view_class->using_manual_layout = real_using_manual_layout;
     files_view_class->end_loading = real_end_loading;
     files_view_class->get_view_id = real_get_view_id;
     files_view_class->get_first_visible_file = real_get_first_visible_file;
diff --git a/src/nautilus-view.h b/src/nautilus-view.h
index 0f8170764..dcd39e0ad 100644
--- a/src/nautilus-view.h
+++ b/src/nautilus-view.h
@@ -30,7 +30,6 @@ enum
 {
     NAUTILUS_VIEW_GRID_ID,
     NAUTILUS_VIEW_LIST_ID,
-    NAUTILUS_VIEW_DESKTOP_ID,
     NAUTILUS_VIEW_EMPTY_ID,
     NAUTILUS_VIEW_OTHER_LOCATIONS_ID,
     NAUTILUS_VIEW_INVALID_ID,
diff --git a/src/resources/css/Adwaita.css b/src/resources/css/Adwaita.css
index 789b89d2b..098d0914a 100644
--- a/src/resources/css/Adwaita.css
+++ b/src/resources/css/Adwaita.css
@@ -18,29 +18,6 @@
     color: mix (@theme_selected_fg_color, @theme_selected_bg_color, 0.20);
 }
 
-.nautilus-desktop.nautilus-canvas-item {
-    color: @theme_selected_fg_color;
-    text-shadow: 1px 1px black;
-}
-
-.nautilus-desktop.nautilus-canvas-item:active {
-    color: @theme_text_color;
-}
-
-.nautilus-desktop.nautilus-canvas-item:selected {
-    color: @theme_selected_fg_color;
-}
-
-.nautilus-desktop.nautilus-canvas-item:active,
-.nautilus-desktop.nautilus-canvas-item:hover,
-.nautilus-desktop.nautilus-canvas-item:selected {
-    text-shadow: none;
-}
-
-.nautilus-desktop.nautilus-canvas-item:selected:backdrop {
-    color: @theme_unfocused_selected_fg_color;
-}
-
 /* Toolbar */
 
 /* Here we use the .button background-image colors from Adwaita, but ligthen them,
diff --git a/src/resources/css/nautilus.css b/src/resources/css/nautilus.css
index 4f875e1e2..a85df669a 100644
--- a/src/resources/css/nautilus.css
+++ b/src/resources/css/nautilus.css
@@ -3,13 +3,6 @@
   -gtk-outline-radius: 20px;
 }
 
-.nautilus-desktop-window,
-.nautilus-desktop-window paned,
-.nautilus-desktop-window notebook,
-.nautilus-desktop-window notebook > stack {
-    background: transparent;
-}
-
 .nautilus-menu-sort-heading {
     min-height: 26px;
     padding-left: 5px;
diff --git a/src/resources/ui/nautilus-files-view-context-menus.ui 
b/src/resources/ui/nautilus-files-view-context-menus.ui
index ba392663c..0b0a365cd 100644
--- a/src/resources/ui/nautilus-files-view-context-menus.ui
+++ b/src/resources/ui/nautilus-files-view-context-menus.ui
@@ -38,25 +38,6 @@
       </item>
     </section>
     <section>
-      <item>
-        <attribute name="label" translatable="yes">_Keep aligned</attribute>
-        <attribute name="action">view.keep-aligned</attribute>
-        <attribute name="hidden-when">action-disabled</attribute>
-      </item>
-      <item>
-        <attribute name="label" translatable="yes">Organize _Desktop by Name</attribute>
-        <attribute name="action">view.organize-desktop-by-name</attribute>
-        <attribute name="hidden-when">action-disabled</attribute>
-      </item>
-    </section>
-    <section>
-      <item>
-        <attribute name="label" translatable="yes">Change _Background</attribute>
-        <attribute name="action">view.change-background</attribute>
-        <attribute name="hidden-when">action-disabled</attribute>
-      </item>
-    </section>
-    <section>
       <attribute name="id">extensions</attribute>
     </section>
   </menu>
@@ -191,11 +172,6 @@
         <attribute name="hidden-when">action-disabled</attribute>
       </item>
       <item>
-        <attribute name="label" translatable="yes">Empty Trash</attribute>
-        <attribute name="action">view.empty-trash</attribute>
-        <attribute name="hidden-when">action-disabled</attribute>
-      </item>
-      <item>
         <attribute name="label" translatable="yes">_Restore From Trash</attribute>
         <attribute name="action">view.restore-from-trash</attribute>
         <attribute name="hidden-when">action-disabled</attribute>
@@ -203,18 +179,6 @@
     </section>
     <section>
       <item>
-        <attribute name="label" translatable="yes">Resize Icon…</attribute>
-        <attribute name="action">view.stretch</attribute>
-        <attribute name="hidden-when">action-disabled</attribute>
-      </item>
-      <item>
-        <attribute name="label" translatable="yes">Restore Icon’s Original Size</attribute>
-        <attribute name="action">view.unstretch</attribute>
-        <attribute name="hidden-when">action-disabled</attribute>
-      </item>
-    </section>
-    <section>
-      <item>
         <attribute name="label" translatable="yes">Rena_me…</attribute>
         <attribute name="action">view.rename</attribute>
       </item>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]