[nautilus/wip/ernestask/long-live-the-desktop: 2/7] general: remove desktop support



commit dc59212a1440e64afd916af74534455ca75108f2
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 +-
 eel/eel-vfs-extensions.c                           |    6 -
 eel/eel-vfs-extensions.h                           |    1 -
 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                    | 2806 ++------------------
 src/nautilus-canvas-container.h                    |   34 +-
 src/nautilus-canvas-dnd.c                          |  243 +-
 src/nautilus-canvas-private.h                      |   46 -
 src/nautilus-canvas-view.c                         |  686 +----
 src/nautilus-canvas-view.h                         |   11 +-
 src/nautilus-dbus-manager.c                        |    4 +-
 src/nautilus-desktop-item-properties.c             |  563 ----
 src/nautilus-desktop-item-properties.h             |   46 -
 src/nautilus-directory-notify.h                    |    8 -
 src/nautilus-directory.c                           |   64 -
 src/nautilus-dnd.c                                 |   83 -
 src/nautilus-dnd.h                                 |    3 -
 src/nautilus-file-changes-queue.c                  |   95 +-
 src/nautilus-file-changes-queue.h                  |    4 -
 src/nautilus-file-operations.c                     |  171 +-
 src/nautilus-file-operations.h                     |    8 -
 src/nautilus-file-undo-operations.c                |   11 +-
 src/nautilus-file-utilities.c                      |    2 +-
 src/nautilus-files-view-dnd.c                      |  105 +-
 src/nautilus-files-view-dnd.h                      |   16 +-
 src/nautilus-files-view.c                          |  128 +-
 src/nautilus-files-view.h                          |   15 +-
 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-link.c                                |   25 +-
 src/nautilus-link.h                                |    1 -
 src/nautilus-list-view.c                           |   31 +-
 src/nautilus-metadata.c                            |    6 -
 src/nautilus-metadata.h                            |    7 -
 src/nautilus-properties-window.c                   |   17 -
 src/nautilus-recent.c                              |    3 +-
 src/nautilus-tree-view-drag-dest.c                 |   46 +-
 src/nautilus-view-icon-controller.c                |    7 -
 src/nautilus-view.h                                |    1 -
 src/nautilus-window-slot-dnd.c                     |    3 +-
 src/nautilus-window-slot.c                         |    3 +-
 src/nautilus-window.c                              |    2 +-
 src/resources/css/Adwaita.css                      |   23 -
 src/resources/css/nautilus.css                     |    7 -
 .../ui/nautilus-files-view-context-menus.ui        |   36 -
 test/test-copy.c                                   |    1 -
 86 files changed, 396 insertions(+), 10432 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 8014bb678..f1c420bb6 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -3,7 +3,6 @@
 #mesondefine GETTEXT_PACKAGE
 #mesondefine HAVE_EXEMPI
 #mesondefine HAVE_SELINUX
-#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/eel/eel-vfs-extensions.c b/eel/eel-vfs-extensions.c
index 6c626f7e3..a35e26ed3 100644
--- a/eel/eel-vfs-extensions.c
+++ b/eel/eel-vfs-extensions.c
@@ -67,12 +67,6 @@ eel_uri_is_other_locations (const char *uri)
     return g_str_has_prefix (uri, "other-locations:");
 }
 
-gboolean
-eel_uri_is_desktop (const char *uri)
-{
-    return g_str_has_prefix (uri, EEL_DESKTOP_URI);
-}
-
 char *
 eel_make_valid_utf8 (const char *name)
 {
diff --git a/eel/eel-vfs-extensions.h b/eel/eel-vfs-extensions.h
index 0ad6b2be5..45d778206 100644
--- a/eel/eel-vfs-extensions.h
+++ b/eel/eel-vfs-extensions.h
@@ -39,7 +39,6 @@ gboolean           eel_uri_is_favorites                  (const char           *
 gboolean           eel_uri_is_trash                      (const char           *uri);
 gboolean           eel_uri_is_trash_folder               (const char           *uri);
 gboolean           eel_uri_is_in_trash                   (const char           *uri);
-gboolean           eel_uri_is_desktop                    (const char           *uri);
 gboolean           eel_uri_is_search                     (const char           *uri);
 gboolean           eel_uri_is_other_locations            (const char           *uri);
 gboolean           eel_uri_is_recent                     (const char           *uri);
diff --git a/meson.build b/meson.build
index 17865c47e..fbc57b034 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
@@ -106,10 +102,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..7a375cea2 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);
@@ -181,7 +164,6 @@ static int compare_icons_vertical (NautilusCanvasContainer *container,
                                    NautilusCanvasIcon      *icon_a,
                                    NautilusCanvasIcon      *icon_b);
 
-static void store_layout_timestamps_now (NautilusCanvasContainer *container);
 static void schedule_redo_layout (NautilusCanvasContainer *container);
 
 static const char *nautilus_canvas_container_accessible_action_names[] =
@@ -217,15 +199,10 @@ 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 +251,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 +259,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;
@@ -438,39 +357,9 @@ icon_get_size (NautilusCanvasContainer *container,
 {
     if (size != NULL)
     {
-        *size = MAX (nautilus_canvas_container_get_icon_size_for_zoom_level (container->details->zoom_level)
-                     * icon->scale, NAUTILUS_CANVAS_ICON_SIZE_SMALL);
-    }
-}
-
-/* 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;
+        *size = MAX (nautilus_canvas_container_get_icon_size_for_zoom_level (container->details->zoom_level),
+                     NAUTILUS_CANVAS_ICON_SIZE_SMALL);
     }
-
-    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
@@ -485,24 +374,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 +392,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 +638,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 +1027,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 +1044,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 +1332,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 +1553,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 +1746,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);
-
-        /* 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;
+    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 +2357,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,
@@ -3477,123 +2461,6 @@ same_column_below_highest (NautilusCanvasContainer *container,
 }
 
 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;
-}
-
-static gboolean
-previous_column_lowest (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_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 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)
-    {
-        return TRUE;
-    }
-    return compare_icons_horizontal_first (container, best_so_far, candidate) < 0;
-}
-
-static gboolean
 closest_in_90_degrees (NautilusCanvasContainer *container,
                        NautilusCanvasIcon      *start_icon,
                        NautilusCanvasIcon      *best_so_far,
@@ -3725,8 +2592,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 +2677,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 +2760,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 +2791,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 +2820,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 +2838,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 +2847,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 +2865,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 +2873,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,32 +2895,15 @@ 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);
-}
-
-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;
-        }
-    }
+                        closest_in_90_degrees);
+}
 
+static void
+keyboard_up (NautilusCanvasContainer *container,
+             GdkEventKey             *event)
+{
     /* 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 +2914,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 +2995,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 +3026,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 +3253,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))
     {
@@ -4702,274 +3492,11 @@ clear_drag_state (NautilusCanvasContainer *container)
 }
 
 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);
-        }
-        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)
-{
-    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 */
-
-    icon = container->details->drag_icon;
-    if (nautilus_canvas_container_is_layout_rtl (container))
-    {
-        position.x = icon->saved_ltr_x = get_mirror_x_position (container, icon, icon->x);
-    }
-    else
-    {
-        position.x = icon->x;
-    }
-    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;
-
-    if (stretched_icon == NULL)
-    {
-        return FALSE;
-    }
-
-    if (container->details->drag_state == DRAG_STATE_STRETCH)
-    {
-        ungrab_stretch_icon (container);
-        clear_drag_state (container);
-    }
-    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 gboolean
 button_release_event (GtkWidget      *widget,
                       GdkEventButton *event)
 {
     NautilusCanvasContainer *container;
     NautilusCanvasContainerDetails *details;
-    double world_x, world_y;
 
     container = NAUTILUS_CANVAS_CONTAINER (widget);
     details = container->details;
@@ -5000,14 +3527,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 +3598,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 +3719,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 +3822,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 +3921,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),
@@ -5510,13 +3959,10 @@ nautilus_canvas_container_class_init (NautilusCanvasContainerClass *class)
                                          move_copy_items),
                         NULL, NULL,
                         g_cclosure_marshal_generic,
-                        G_TYPE_NONE, 6,
-                        G_TYPE_POINTER,
+                        G_TYPE_NONE, 3,
                         G_TYPE_POINTER,
                         G_TYPE_POINTER,
-                        GDK_TYPE_DRAG_ACTION,
-                        G_TYPE_INT,
-                        G_TYPE_INT);
+                        GDK_TYPE_DRAG_ACTION);
     signals[HANDLE_NETSCAPE_URL]
         = g_signal_new ("handle-netscape-url",
                         G_TYPE_FROM_CLASS (class),
@@ -5525,12 +3971,10 @@ nautilus_canvas_container_class_init (NautilusCanvasContainerClass *class)
                                          handle_netscape_url),
                         NULL, NULL,
                         g_cclosure_marshal_generic,
-                        G_TYPE_NONE, 5,
+                        G_TYPE_NONE, 3,
                         G_TYPE_STRING,
                         G_TYPE_STRING,
-                        GDK_TYPE_DRAG_ACTION,
-                        G_TYPE_INT,
-                        G_TYPE_INT);
+                        GDK_TYPE_DRAG_ACTION);
     signals[HANDLE_URI_LIST]
         = g_signal_new ("handle-uri-list",
                         G_TYPE_FROM_CLASS (class),
@@ -5539,12 +3983,10 @@ nautilus_canvas_container_class_init (NautilusCanvasContainerClass *class)
                                          handle_uri_list),
                         NULL, NULL,
                         g_cclosure_marshal_generic,
-                        G_TYPE_NONE, 5,
+                        G_TYPE_NONE, 3,
                         G_TYPE_STRING,
                         G_TYPE_STRING,
-                        GDK_TYPE_DRAG_ACTION,
-                        G_TYPE_INT,
-                        G_TYPE_INT);
+                        GDK_TYPE_DRAG_ACTION);
     signals[HANDLE_TEXT]
         = g_signal_new ("handle-text",
                         G_TYPE_FROM_CLASS (class),
@@ -5553,12 +3995,10 @@ nautilus_canvas_container_class_init (NautilusCanvasContainerClass *class)
                                          handle_text),
                         NULL, NULL,
                         g_cclosure_marshal_generic,
-                        G_TYPE_NONE, 5,
+                        G_TYPE_NONE, 3,
                         G_TYPE_STRING,
                         G_TYPE_STRING,
-                        GDK_TYPE_DRAG_ACTION,
-                        G_TYPE_INT,
-                        G_TYPE_INT);
+                        GDK_TYPE_DRAG_ACTION);
     signals[HANDLE_RAW]
         = g_signal_new ("handle-raw",
                         G_TYPE_FROM_CLASS (class),
@@ -5567,86 +4007,42 @@ nautilus_canvas_container_class_init (NautilusCanvasContainerClass *class)
                                          handle_raw),
                         NULL, NULL,
                         g_cclosure_marshal_generic,
-                        G_TYPE_NONE, 7,
+                        G_TYPE_NONE, 5,
                         G_TYPE_POINTER,
                         G_TYPE_INT,
                         G_TYPE_STRING,
                         G_TYPE_STRING,
-                        GDK_TYPE_DRAG_ACTION,
-                        G_TYPE_INT,
-                        G_TYPE_INT);
+                        GDK_TYPE_DRAG_ACTION);
     signals[HANDLE_HOVER] =
         g_signal_new ("handle-hover",
                       G_TYPE_FROM_CLASS (class),
                       G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (NautilusCanvasContainerClass,
-                                       handle_hover),
-                      NULL, NULL,
-                      g_cclosure_marshal_generic,
-                      G_TYPE_NONE, 1,
-                      G_TYPE_STRING);
-    signals[GET_CONTAINER_URI]
-        = g_signal_new ("get-container-uri",
-                        G_TYPE_FROM_CLASS (class),
-                        G_SIGNAL_RUN_LAST,
-                        G_STRUCT_OFFSET (NautilusCanvasContainerClass,
-                                         get_container_uri),
-                        NULL, NULL,
-                        g_cclosure_marshal_generic,
-                        G_TYPE_STRING, 0);
-    signals[CAN_ACCEPT_ITEM]
-        = g_signal_new ("can-accept-item",
-                        G_TYPE_FROM_CLASS (class),
-                        G_SIGNAL_RUN_LAST,
-                        G_STRUCT_OFFSET (NautilusCanvasContainerClass,
-                                         can_accept_item),
-                        NULL, NULL,
-                        g_cclosure_marshal_generic,
-                        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_STRUCT_OFFSET (NautilusCanvasContainerClass,
+                                       handle_hover),
+                      NULL, NULL,
+                      g_cclosure_marshal_generic,
+                      G_TYPE_NONE, 1,
+                      G_TYPE_STRING);
+    signals[GET_CONTAINER_URI]
+        = g_signal_new ("get-container-uri",
                         G_TYPE_FROM_CLASS (class),
                         G_SIGNAL_RUN_LAST,
                         G_STRUCT_OFFSET (NautilusCanvasContainerClass,
-                                         get_stored_layout_timestamp),
+                                         get_container_uri),
                         NULL, NULL,
                         g_cclosure_marshal_generic,
-                        G_TYPE_BOOLEAN, 2,
-                        G_TYPE_POINTER,
-                        G_TYPE_POINTER);
-    signals[STORE_LAYOUT_TIMESTAMP]
-        = g_signal_new ("store-layout-timestamp",
+                        G_TYPE_STRING, 0);
+    signals[CAN_ACCEPT_ITEM]
+        = g_signal_new ("can-accept-item",
                         G_TYPE_FROM_CLASS (class),
                         G_SIGNAL_RUN_LAST,
                         G_STRUCT_OFFSET (NautilusCanvasContainerClass,
-                                         store_layout_timestamp),
+                                         can_accept_item),
                         NULL, NULL,
                         g_cclosure_marshal_generic,
-                        G_TYPE_BOOLEAN, 2,
+                        G_TYPE_INT, 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);
+                        G_TYPE_STRING);
     signals[BAND_SELECT_STARTED]
         = g_signal_new ("band-select-started",
                         G_TYPE_FROM_CLASS (class),
@@ -5770,7 +4166,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 +4248,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;
@@ -5870,7 +4256,6 @@ nautilus_canvas_container_init (NautilusCanvasContainer *container)
     details = g_new0 (NautilusCanvasContainerDetails, 1);
 
     details->icon_set = g_hash_table_new (g_direct_hash, g_direct_equal);
-    details->layout_timestamp = UNDEFINED_TIME;
     details->zoom_level = NAUTILUS_CANVAS_ZOOM_LEVEL_STANDARD;
 
     container->details = details;
@@ -5891,12 +4276,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 +4372,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
@@ -6142,8 +4510,6 @@ nautilus_canvas_container_clear (NautilusCanvasContainer *container)
     g_return_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container));
 
     details = container->details;
-    details->layout_timestamp = UNDEFINED_TIME;
-    details->store_layout_timestamps_when_finishing_new_icons = FALSE;
 
     if (details->icons == NULL)
     {
@@ -6154,7 +4520,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 +4589,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 +4627,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 +4646,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 +4767,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 +4928,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 +4948,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 +5017,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,147 +5033,22 @@ 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);
+        finish_adding_icon (container, p->data);
     }
     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);
-    }
-
-    if (container->details->store_layout_timestamps_when_finishing_new_icons)
-    {
-        store_layout_timestamps_now (container);
-        container->details->store_layout_timestamps_when_finishing_new_icons = FALSE;
-    }
-
     return TRUE;
 }
 
-static gboolean
-is_old_or_unknown_icon_data (NautilusCanvasContainer *container,
-                             NautilusCanvasIconData  *data)
-{
-    time_t timestamp;
-    gboolean success;
-
-    if (container->details->layout_timestamp == UNDEFINED_TIME)
-    {
-        /* don't know */
-        return FALSE;
-    }
-
-    g_signal_emit (container,
-                   signals[GET_STORED_LAYOUT_TIMESTAMP], 0,
-                   data, &timestamp, &success);
-    return (!success || timestamp < container->details->layout_timestamp);
-}
-
 /**
  * nautilus_canvas_container_add:
  * @container: A NautilusCanvasContainer
@@ -6931,8 +5085,6 @@ nautilus_canvas_container_add (NautilusCanvasContainer *container,
      * if the previous icon position is free. If the position
      * is occupied, another position near the last one will
      */
-    icon->has_lazy_position = is_old_or_unknown_icon_data (container, data);
-    icon->scale = 1.0;
     icon->item = NAUTILUS_CANVAS_ITEM
                      (eel_canvas_item_new (EEL_CANVAS_GROUP (EEL_CANVAS (container)->root),
                                            nautilus_canvas_item_get_type (),
@@ -7223,11 +5375,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;
     }
 
@@ -7498,164 +5648,45 @@ nautilus_canvas_container_get_icon_by_uri (NautilusCanvasContainer *container,
 }
 
 static NautilusCanvasIcon *
-get_nth_selected_icon (NautilusCanvasContainer *container,
-                       int                      index)
-{
-    GList *p;
-    NautilusCanvasIcon *icon;
-    int selection_count;
-
-    g_assert (index > 0);
-
-    /* Find the nth selected icon. */
-    selection_count = 0;
-    for (p = container->details->icons; p != NULL; p = p->next)
-    {
-        icon = p->data;
-        if (icon->is_selected)
-        {
-            if (++selection_count == index)
-            {
-                return icon;
-            }
-        }
-    }
-    return NULL;
-}
-
-static NautilusCanvasIcon *
-get_first_selected_icon (NautilusCanvasContainer *container)
-{
-    return get_nth_selected_icon (container, 1);
-}
-
-static gboolean
-has_multiple_selection (NautilusCanvasContainer *container)
-{
-    return get_nth_selected_icon (container, 2) != NULL;
-}
-
-static gboolean
-all_selected (NautilusCanvasContainer *container)
-{
-    GList *p;
-    NautilusCanvasIcon *icon;
-
-    for (p = container->details->icons; p != NULL; p = p->next)
-    {
-        icon = p->data;
-        if (!icon->is_selected)
-        {
-            return FALSE;
-        }
-    }
-    return TRUE;
-}
-
-static gboolean
-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)
+get_nth_selected_icon (NautilusCanvasContainer *container,
+                       int                      index)
 {
     GList *p;
     NautilusCanvasIcon *icon;
+    int selection_count;
+
+    g_assert (index > 0);
 
+    /* Find the nth selected icon. */
+    selection_count = 0;
     for (p = container->details->icons; p != NULL; p = p->next)
     {
         icon = p->data;
-        if (icon->is_selected && icon->scale != 1.0)
+        if (icon->is_selected)
         {
-            return TRUE;
+            if (++selection_count == index)
+            {
+                return icon;
+            }
         }
     }
-    return FALSE;
+    return NULL;
 }
 
-/**
- * nautilus_canvas_container_unstretch
- * @container: An canvas container widget.
- *
- * Gets rid of any canvas stretching.
- **/
-void
-nautilus_canvas_container_unstretch (NautilusCanvasContainer *container)
+static NautilusCanvasIcon *
+get_first_selected_icon (NautilusCanvasContainer *container)
+{
+    return get_nth_selected_icon (container, 1);
+}
+
+static gboolean
+has_multiple_selection (NautilusCanvasContainer *container)
+{
+    return get_nth_selected_icon (container, 2) != NULL;
+}
+
+static gboolean
+all_selected (NautilusCanvasContainer *container)
 {
     GList *p;
     NautilusCanvasIcon *icon;
@@ -7663,55 +5694,18 @@ nautilus_canvas_container_unstretch (NautilusCanvasContainer *container)
     for (p = container->details->icons; p != NULL; p = p->next)
     {
         icon = p->data;
-        if (icon->is_selected)
+        if (!icon->is_selected)
         {
-            nautilus_canvas_container_move_icon (container, icon,
-                                                 icon->x, icon->y,
-                                                 1.0,
-                                                 FALSE, TRUE, TRUE);
+            return FALSE;
         }
     }
+    return TRUE;
 }
 
-static void
-compute_stretch (StretchState *start,
-                 StretchState *current)
+static gboolean
+has_selection (NautilusCanvasContainer *container)
 {
-    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;
-    }
+    return get_nth_selected_icon (container, 1) != NULL;
 }
 
 char *
@@ -7768,164 +5762,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 +5780,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 +6419,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 +6439,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)
     {
@@ -8690,113 +6448,3 @@ nautilus_canvas_container_get_max_layout_lines (NautilusCanvasContainer *contain
 
     return limit;
 }
-
-void
-nautilus_canvas_container_begin_loading (NautilusCanvasContainer *container)
-{
-    gboolean dummy;
-
-    if (nautilus_canvas_container_get_store_layout_timestamps (container))
-    {
-        container->details->layout_timestamp = UNDEFINED_TIME;
-        g_signal_emit (container,
-                       signals[GET_STORED_LAYOUT_TIMESTAMP], 0,
-                       NULL, &container->details->layout_timestamp, &dummy);
-    }
-}
-
-static void
-store_layout_timestamps_now (NautilusCanvasContainer *container)
-{
-    NautilusCanvasIcon *icon;
-    GList *p;
-    gboolean dummy;
-
-    container->details->layout_timestamp = time (NULL);
-    g_signal_emit (container,
-                   signals[STORE_LAYOUT_TIMESTAMP], 0,
-                   NULL, &container->details->layout_timestamp, &dummy);
-
-    for (p = container->details->icons; p != NULL; p = p->next)
-    {
-        icon = p->data;
-
-        g_signal_emit (container,
-                       signals[STORE_LAYOUT_TIMESTAMP], 0,
-                       icon->data, &container->details->layout_timestamp, &dummy);
-    }
-}
-
-
-void
-nautilus_canvas_container_end_loading (NautilusCanvasContainer *container,
-                                       gboolean                 all_icons_added)
-{
-    if (all_icons_added &&
-        nautilus_canvas_container_get_store_layout_timestamps (container))
-    {
-        if (container->details->new_icons == NULL)
-        {
-            store_layout_timestamps_now (container);
-        }
-        else
-        {
-            container->details->store_layout_timestamps_when_finishing_new_icons = TRUE;
-        }
-    }
-}
-
-gboolean
-nautilus_canvas_container_get_store_layout_timestamps (NautilusCanvasContainer *container)
-{
-    return container->details->store_layout_timestamps;
-}
-
-
-void
-nautilus_canvas_container_set_store_layout_timestamps (NautilusCanvasContainer *container,
-                                                       gboolean                 store_layout_timestamps)
-{
-    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..63cec4b6b 100644
--- a/src/nautilus-canvas-container.h
+++ b/src/nautilus-canvas-container.h
@@ -86,7 +86,6 @@ typedef struct {
                                                   GdkEventButton *event);
        void         (* move_copy_items)          (NautilusCanvasContainer *container,
                                                   const GList *item_uris,
-                                                  GdkPoint *relative_item_points,
                                                   const char *target_uri,
                                                   GdkDragAction action,
                                                   int x,
@@ -194,10 +193,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 +233,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 +257,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 +266,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,24 +278,17 @@ 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,
-                                                                          gboolean                
store_layout);
 
 void              nautilus_canvas_container_widget_to_file_operation_position (NautilusCanvasContainer 
*container,
                                                                               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..a9521e0d7 100644
--- a/src/nautilus-canvas-dnd.c
+++ b/src/nautilus-canvas-dnd.c
@@ -87,8 +87,7 @@ static char *nautilus_canvas_container_find_drop_target (NautilusCanvasContainer
                                                          GdkDragContext          *context,
                                                          int                      x,
                                                          int                      y,
-                                                         gboolean                *icon_hit,
-                                                         gboolean                 rewrite_desktop);
+                                                         gboolean                *icon_hit);
 
 static EelCanvasItem *
 create_selection_shadow (NautilusCanvasContainer *container,
@@ -252,7 +251,7 @@ icon_get_data_binder (NautilusCanvasIcon *icon,
 
     uri = nautilus_canvas_container_get_icon_uri (container, icon);
     file = nautilus_file_get_by_uri (uri);
-    if (!eel_uri_is_desktop (uri) && !nautilus_file_is_nautilus_link (file))
+    if (!nautilus_file_is_nautilus_link (file))
     {
         g_free (uri);
         uri = nautilus_canvas_container_get_icon_activation_uri (container, icon);
@@ -482,7 +481,7 @@ set_direct_save_uri (GtkWidget        *widget,
 
     filename = get_direct_save_filename (context);
     drop_target = nautilus_canvas_container_find_drop_target (NAUTILUS_CANVAS_CONTAINER (widget),
-                                                              context, x, y, NULL, TRUE);
+                                                              context, x, y, NULL);
 
     if (drop_target && eel_uri_is_trash (drop_target))
     {
@@ -537,14 +536,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)
@@ -685,14 +677,8 @@ nautilus_canvas_container_selection_items_local (NautilusCanvasContainer *contai
     /* get the URI associated with the container */
     container_uri_string = get_container_uri (container);
 
-    if (eel_uri_is_desktop (container_uri_string))
-    {
-        result = nautilus_drag_items_on_desktop (items);
-    }
-    else
-    {
-        result = nautilus_drag_items_local (container_uri_string, items);
-    }
+    result = nautilus_drag_items_local (container_uri_string, items);
+
     g_free (container_uri_string);
 
     return result;
@@ -713,13 +699,12 @@ receive_dropped_netscape_url (NautilusCanvasContainer *container,
         return;
     }
 
-    drop_target = nautilus_canvas_container_find_drop_target (container, context, x, y, NULL, TRUE);
+    drop_target = nautilus_canvas_container_find_drop_target (container, context, x, y, NULL);
 
     g_signal_emit_by_name (container, "handle-netscape-url",
                            encoded_url,
                            drop_target,
-                           gdk_drag_context_get_selected_action (context),
-                           x, y);
+                           gdk_drag_context_get_selected_action (context));
 
     g_free (drop_target);
 }
@@ -739,13 +724,12 @@ receive_dropped_uri_list (NautilusCanvasContainer *container,
         return;
     }
 
-    drop_target = nautilus_canvas_container_find_drop_target (container, context, x, y, NULL, TRUE);
+    drop_target = nautilus_canvas_container_find_drop_target (container, context, x, y, NULL);
 
     g_signal_emit_by_name (container, "handle-uri-list",
                            uri_list,
                            drop_target,
-                           gdk_drag_context_get_selected_action (context),
-                           x, y);
+                           gdk_drag_context_get_selected_action (context));
 
     g_free (drop_target);
 }
@@ -765,13 +749,12 @@ receive_dropped_text (NautilusCanvasContainer *container,
         return;
     }
 
-    drop_target = nautilus_canvas_container_find_drop_target (container, context, x, y, NULL, TRUE);
+    drop_target = nautilus_canvas_container_find_drop_target (container, context, x, y, NULL);
 
     g_signal_emit_by_name (container, "handle-text",
                            text,
                            drop_target,
-                           gdk_drag_context_get_selected_action (context),
-                           x, y);
+                           gdk_drag_context_get_selected_action (context));
 
     g_free (drop_target);
 }
@@ -793,15 +776,14 @@ receive_dropped_raw (NautilusCanvasContainer *container,
         return;
     }
 
-    drop_target = nautilus_canvas_container_find_drop_target (container, context, x, y, NULL, TRUE);
+    drop_target = nautilus_canvas_container_find_drop_target (container, context, x, y, NULL);
 
     g_signal_emit_by_name (container, "handle-raw",
                            raw_data,
                            length,
                            drop_target,
                            direct_save_uri,
-                           gdk_drag_context_get_selected_action (context),
-                           x, y);
+                           gdk_drag_context_get_selected_action (context));
 
     g_free (drop_target);
 }
@@ -910,87 +892,13 @@ 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,
-                      int                      y,
                       const char              *target_uri,
                       gboolean                 icon_hit)
 {
     GList *source_uris, *p;
-    GArray *source_item_locations = NULL;
     gboolean free_target_uri, is_rtl;
-    int index, item_x;
-    GtkAllocation allocation;
 
     if (container->details->dnd_info->drag_info.selection_list == NULL)
     {
@@ -1007,50 +915,13 @@ handle_nonlocal_move (NautilusCanvasContainer *container,
 
     is_rtl = nautilus_canvas_container_is_layout_rtl (container);
 
-    if (!icon_hit && eel_uri_is_desktop (target_uri))
-    {
-        /* Drop onto a container. Pass along the item points to allow placing
-         * the items in their same relative positions in the new container.
-         */
-        source_item_locations = g_array_new (FALSE, TRUE, sizeof (GdkPoint));
-        source_item_locations = g_array_set_size (source_item_locations,
-                                                  g_list_length 
(container->details->dnd_info->drag_info.selection_list));
-
-        for (index = 0, p = container->details->dnd_info->drag_info.selection_list;
-             p != NULL; index++, p = p->next)
-        {
-            item_x = ((NautilusDragSelectionItem *) p->data)->icon_x;
-            if (is_rtl)
-            {
-                item_x = -item_x - ((NautilusDragSelectionItem *) p->data)->icon_width;
-            }
-            g_array_index (source_item_locations, GdkPoint, index).x = item_x;
-            g_array_index (source_item_locations, GdkPoint, index).y =
-                ((NautilusDragSelectionItem *) p->data)->icon_y;
-        }
-    }
-
     free_target_uri = FALSE;
-    /* Rewrite internal desktop URIs to the normal target uri */
-    if (eel_uri_is_desktop (target_uri))
-    {
-        target_uri = nautilus_get_desktop_directory_uri ();
-        free_target_uri = TRUE;
-    }
-
-    if (is_rtl)
-    {
-        gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
-        x = CANVAS_WIDTH (container, allocation) - x;
-    }
 
     /* start the copy */
     g_signal_emit_by_name (container, "move-copy-items",
                            source_uris,
-                           source_item_locations,
                            target_uri,
-                           action,
-                           x, y);
+                           action);
 
     if (free_target_uri)
     {
@@ -1058,10 +929,6 @@ handle_nonlocal_move (NautilusCanvasContainer *container,
     }
 
     g_list_free (source_uris);
-    if (source_item_locations != NULL)
-    {
-        g_array_free (source_item_locations, TRUE);
-    }
 }
 
 static char *
@@ -1069,8 +936,7 @@ nautilus_canvas_container_find_drop_target (NautilusCanvasContainer *container,
                                             GdkDragContext          *context,
                                             int                      x,
                                             int                      y,
-                                            gboolean                *icon_hit,
-                                            gboolean                 rewrite_desktop)
+                                            gboolean                *icon_hit)
 {
     NautilusCanvasIcon *drop_target_icon;
     double world_x, world_y;
@@ -1131,24 +997,16 @@ nautilus_canvas_container_find_drop_target (NautilusCanvasContainer *container,
 
         if (container_uri != NULL)
         {
-            if (rewrite_desktop && eel_uri_is_desktop (container_uri))
+            gboolean can;
+            file = nautilus_file_get_by_uri (container_uri);
+            can = nautilus_drag_can_accept_info (file,
+                                                 container->details->dnd_info->drag_info.data_type,
+                                                 container->details->dnd_info->drag_info.selection_list);
+            g_object_unref (file);
+            if (!can)
             {
                 g_free (container_uri);
-                container_uri = nautilus_get_desktop_directory_uri ();
-            }
-            else
-            {
-                gboolean can;
-                file = nautilus_file_get_by_uri (container_uri);
-                can = nautilus_drag_can_accept_info (file,
-                                                     container->details->dnd_info->drag_info.data_type,
-                                                     container->details->dnd_info->drag_info.selection_list);
-                g_object_unref (file);
-                if (!can)
-                {
-                    g_free (container_uri);
-                    container_uri = NULL;
-                }
+                container_uri = NULL;
             }
         }
 
@@ -1185,19 +1043,8 @@ nautilus_canvas_container_receive_dropped_icons (NautilusCanvasContainer *contai
 
     if (real_action == GDK_ACTION_ASK)
     {
-        /* FIXME bugzilla.gnome.org 42485: This belongs in FMDirectoryView, not here. */
-        /* Check for special case items in selection list */
-        if (nautilus_drag_selection_includes_special_link 
(container->details->dnd_info->drag_info.selection_list))
-        {
-            /* We only want to move the trash */
-            action = GDK_ACTION_MOVE;
-        }
-        else
-        {
-            action = GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK;
-        }
-        real_action = nautilus_drag_drop_action_ask
-                          (GTK_WIDGET (container), action);
+        action = GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK;
+        real_action = nautilus_drag_drop_action_ask (GTK_WIDGET (container), action);
     }
 
     if (real_action > 0)
@@ -1208,25 +1055,19 @@ nautilus_canvas_container_receive_dropped_icons (NautilusCanvasContainer *contai
                                     &world_x, &world_y);
 
         drop_target = nautilus_canvas_container_find_drop_target (container,
-                                                                  context, x, y, &icon_hit, FALSE);
+                                                                  context, x, y, &icon_hit);
 
         local_move_only = FALSE;
         if (!icon_hit && real_action == GDK_ACTION_MOVE)
         {
-            /* we can just move the canvas positions if the move ended up in
-             * the item's parent container
-             */
             local_move_only = nautilus_canvas_container_selection_items_local
                                   (container, container->details->dnd_info->drag_info.selection_list);
         }
 
-        if (local_move_only)
+        /* If the move is local, there is nothing to do. */
+        if (!local_move_only)
         {
-            handle_local_move (container, world_x, world_y);
-        }
-        else
-        {
-            handle_nonlocal_move (container, real_action, world_x, world_y, drop_target, icon_hit);
+            handle_nonlocal_move (container, real_action, drop_target, icon_hit);
         }
     }
 
@@ -1266,7 +1107,7 @@ nautilus_canvas_container_get_drop_action (NautilusCanvasContainer *container,
     *action = 0;
 
     drop_target = nautilus_canvas_container_find_drop_target (container,
-                                                              context, x, y, &icon_hit, FALSE);
+                                                              context, x, y, &icon_hit);
     if (drop_target == NULL)
     {
         return;
@@ -1674,11 +1515,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));
@@ -1720,7 +1556,7 @@ drag_motion_callback (GtkWidget      *widget,
     {
         char *uri;
         uri = nautilus_canvas_container_find_drop_target (NAUTILUS_CANVAS_CONTAINER (widget),
-                                                          context, x, y, NULL, TRUE);
+                                                          context, x, y, NULL);
         check_hover_timer (NAUTILUS_CANVAS_CONTAINER (widget), uri);
         g_free (uri);
         start_dnd_highlight (widget);
@@ -1931,19 +1767,11 @@ drag_data_received_callback (GtkWidget        *widget,
                          selection_data[0] == 'F' &&
                          drag_info->direct_save_uri != NULL)
                 {
-                    GdkPoint p;
                     GFile *location;
 
                     location = g_file_new_for_uri (drag_info->direct_save_uri);
 
                     nautilus_file_changes_queue_file_added (location);
-                    p.x = x;
-                    p.y = y;
-                    nautilus_file_changes_queue_schedule_position_set (
-                        location,
-                        p,
-                        gdk_screen_get_number (
-                            gtk_widget_get_screen (widget)));
                     g_object_unref (location);
                     nautilus_file_changes_consume_changes (TRUE);
                     success = TRUE;
@@ -1980,12 +1808,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..e9ae3b638 100644
--- a/src/nautilus-canvas-private.h
+++ b/src/nautilus-canvas-private.h
@@ -47,9 +47,6 @@ typedef struct {
         * to the nautilus metafile. 
         */
         double saved_ltr_x;
-       
-       /* Scale factor (stretches icon). */
-       double scale;
 
        /* Position in the view */
        int position;
@@ -62,8 +59,6 @@ typedef struct {
 
        /* Whether this item is visible in the view. */
        eel_boolean_bit is_visible : 1;
-
-       eel_boolean_bit has_lazy_position : 1;
 } NautilusCanvasIcon;
 
 
@@ -130,11 +125,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;
 
@@ -165,7 +155,6 @@ struct NautilusCanvasContainerDetails {
        int drag_x, drag_y;
        DragState drag_state;
        gboolean drag_started;
-       StretchState stretch_start;
 
        gboolean icon_selected_on_button_down;
        gboolean double_clicked;
@@ -177,9 +166,6 @@ struct NautilusCanvasContainerDetails {
        /* Idle ID. */
        guint idle_id;
 
-       /* Idle handler for stretch code */
-       guint stretch_idle_id;
-
        /* Align idle id */
        guint align_idle_id;
 
@@ -201,10 +187,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,24 +194,8 @@ 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;
-       
-       /* The position we are scaling to on stretch */
-       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;
@@ -238,23 +204,11 @@ struct NautilusCanvasContainerDetails {
        eel_boolean_bit is_loading : 1;
        eel_boolean_bit needs_resort : 1;
        eel_boolean_bit selection_needs_resort : 1;
-
-       eel_boolean_bit store_layout_timestamps : 1;
-       eel_boolean_bit store_layout_timestamps_when_finishing_new_icons : 1;
-       time_t layout_timestamp;
 };
 
 /* 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..71187cfc3 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
@@ -86,8 +75,10 @@ typedef enum
     MENU_ITEM_TYPE_TREE
 } MenuItemType;
 
-typedef struct
+struct _NautilusCanvasView
 {
+    NautilusFilesView parent_instance;
+
     GList *icons_not_positioned;
 
     guint react_to_canvas_change_idle_id;
@@ -96,18 +87,13 @@ 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.
      * Ideally we would connect to a weak reference and do a cancellable.
      */
     gboolean destroyed;
-} NautilusCanvasViewPrivate;
+};
 
 /* Note that the first item in this list is the default sort,
  * and that the items show up in the menu in the order they
@@ -186,19 +172,17 @@ static const SortCriterion sort_criteria[] =
     }
 };
 
-G_DEFINE_TYPE_WITH_PRIVATE (NautilusCanvasView, nautilus_canvas_view, NAUTILUS_TYPE_FILES_VIEW);
+G_DEFINE_TYPE (NautilusCanvasView, nautilus_canvas_view, NAUTILUS_TYPE_FILES_VIEW);
 
 static void                 nautilus_canvas_view_set_directory_sort_by (NautilusCanvasView  *canvas_view,
                                                                         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,
@@ -209,18 +193,16 @@ static void
 nautilus_canvas_view_destroy (GtkWidget *object)
 {
     NautilusCanvasView *canvas_view;
-    NautilusCanvasViewPrivate *priv;
     GtkClipboard *clipboard;
 
     canvas_view = NAUTILUS_CANVAS_VIEW (object);
-    priv = nautilus_canvas_view_get_instance_private (canvas_view);
 
     nautilus_canvas_view_clear (NAUTILUS_FILES_VIEW (object));
 
-    if (priv->react_to_canvas_change_idle_id != 0)
+    if (canvas_view->react_to_canvas_change_idle_id != 0)
     {
-        g_source_remove (priv->react_to_canvas_change_idle_id);
-        priv->react_to_canvas_change_idle_id = 0;
+        g_source_remove (canvas_view->react_to_canvas_change_idle_id);
+        canvas_view->react_to_canvas_change_idle_id = 0;
     }
 
     clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
@@ -228,10 +210,10 @@ nautilus_canvas_view_destroy (GtkWidget *object)
                                           on_clipboard_owner_changed,
                                           canvas_view);
 
-    if (priv->icons_not_positioned)
+    if (canvas_view->icons_not_positioned)
     {
-        nautilus_file_list_free (priv->icons_not_positioned);
-        priv->icons_not_positioned = NULL;
+        nautilus_file_list_free (canvas_view->icons_not_positioned);
+        canvas_view->icons_not_positioned = NULL;
     }
 
     GTK_WIDGET_CLASS (nautilus_canvas_view_parent_class)->destroy (object);
@@ -240,11 +222,7 @@ nautilus_canvas_view_destroy (GtkWidget *object)
 static NautilusCanvasContainer *
 get_canvas_container (NautilusCanvasView *canvas_view)
 {
-    NautilusCanvasViewPrivate *priv;
-
-    priv = nautilus_canvas_view_get_instance_private (canvas_view);
-
-    return NAUTILUS_CANVAS_CONTAINER (priv->canvas_container);
+    return NAUTILUS_CANVAS_CONTAINER (canvas_view->canvas_container);
 }
 
 NautilusCanvasContainer *
@@ -253,81 +231,15 @@ 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,
                        gboolean             set_metadata)
 {
     NautilusFile *file;
-    NautilusCanvasViewPrivate *priv;
     const SortCriterion *overrided_sort_criterion;
 
     file = nautilus_files_view_get_directory_as_file (NAUTILUS_FILES_VIEW (canvas_view));
-    priv = nautilus_canvas_view_get_instance_private (canvas_view);
 
     /* Make sure we use the default one and not one that the user used previously
      * of the change to not allow sorting on search and recent, or the
@@ -336,7 +248,7 @@ update_sort_criterion (NautilusCanvasView  *canvas_view,
     {
         overrided_sort_criterion = get_default_sort_order (file);
     }
-    else if (sort != NULL && priv->sort != sort)
+    else if (sort != NULL && canvas_view->sort != sort)
     {
         overrided_sort_criterion = sort;
         if (set_metadata)
@@ -352,27 +264,7 @@ update_sort_criterion (NautilusCanvasView  *canvas_view,
         return;
     }
 
-    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));
+    canvas_view->sort = overrided_sort_criterion;
 }
 
 static void
@@ -497,42 +389,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 +397,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 +443,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 +456,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)
@@ -761,8 +535,6 @@ nautilus_canvas_view_begin_loading (NautilusFilesView *view)
     uri = nautilus_file_get_uri (file);
     canvas_container = GTK_WIDGET (get_canvas_container (canvas_view));
 
-    nautilus_canvas_container_begin_loading (NAUTILUS_CANVAS_CONTAINER (canvas_container));
-
     g_free (uri);
 
     /* Set the sort mode.
@@ -772,18 +544,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);
@@ -795,15 +555,14 @@ on_clipboard_contents_received (GtkClipboard     *clipboard,
                                 GtkSelectionData *selection_data,
                                 gpointer          user_data)
 {
-    NautilusCanvasViewPrivate *priv;
-    NautilusCanvasView *view = NAUTILUS_CANVAS_VIEW (user_data);
+    NautilusCanvasView *canvas_view;
 
-    priv = nautilus_canvas_view_get_instance_private (view);
+    canvas_view = NAUTILUS_CANVAS_VIEW (user_data);
 
-    if (priv->destroyed)
+    if (canvas_view->destroyed)
     {
         /* We've been destroyed since call */
-        g_object_unref (view);
+        g_object_unref (canvas_view);
         return;
     }
 
@@ -814,7 +573,7 @@ on_clipboard_contents_received (GtkClipboard     *clipboard,
 
         uris = nautilus_clipboard_get_uri_list_from_selection_data (selection_data);
         files = nautilus_file_list_from_uri_list (uris);
-        nautilus_canvas_container_set_highlighted_for_clipboard (get_canvas_container (view),
+        nautilus_canvas_container_set_highlighted_for_clipboard (get_canvas_container (canvas_view),
                                                                  files);
 
         nautilus_file_list_free (files);
@@ -822,11 +581,11 @@ on_clipboard_contents_received (GtkClipboard     *clipboard,
     }
     else
     {
-        nautilus_canvas_container_set_highlighted_for_clipboard (get_canvas_container (view),
+        nautilus_canvas_container_set_highlighted_for_clipboard (get_canvas_container (canvas_view),
                                                                  NULL);
     }
 
-    g_object_unref (view);
+    g_object_unref (canvas_view);
 }
 
 static void
@@ -854,8 +613,6 @@ nautilus_canvas_view_end_loading (NautilusFilesView *view,
     NautilusCanvasView *canvas_view;
 
     canvas_view = NAUTILUS_CANVAS_VIEW (view);
-    nautilus_canvas_container_end_loading (nautilus_canvas_view_get_canvas_container (canvas_view),
-                                           all_files_seen);
     update_clipboard_status (canvas_view);
 }
 
@@ -984,28 +741,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 +754,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 +787,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,56 +854,42 @@ 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;
 
     canvas_view = NAUTILUS_CANVAS_VIEW (view);
-    priv = nautilus_canvas_view_get_instance_private (canvas_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),
+                   canvas_view->sort->action_target_name) != 0)
+    {
+        g_action_group_change_action_state (view_action_group,
+                                            "sort",
+                                            g_variant_new_string (canvas_view->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 +980,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)
@@ -1445,15 +1109,11 @@ nautilus_canvas_view_compare_files (NautilusCanvasView *canvas_view,
                                     NautilusFile       *a,
                                     NautilusFile       *b)
 {
-    NautilusCanvasViewPrivate *priv;
-
-    priv = nautilus_canvas_view_get_instance_private (canvas_view);
-
     return nautilus_file_compare_for_sort
-               (a, b, priv->sort->sort_type,
+               (a, b, canvas_view->sort->sort_type,
                /* Use type-unsafe cast for performance */
                nautilus_files_view_should_sort_directories_first ((NautilusFilesView *) canvas_view),
-               priv->sort->reverse_order);
+               canvas_view->sort->reverse_order);
 }
 
 static int
@@ -1496,37 +1156,6 @@ canvas_container_context_click_background_callback (NautilusCanvasContainer *con
     nautilus_files_view_pop_up_background_context_menu (NAUTILUS_FILES_VIEW (canvas_view), event);
 }
 
-static void
-icon_position_changed_callback (NautilusCanvasContainer      *container,
-                                NautilusFile                 *file,
-                                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,
-        "1.0", scale_string);
-}
-
 static char *
 get_icon_uri_callback (NautilusCanvasContainer *container,
                        NautilusFile            *file,
@@ -1621,11 +1250,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
@@ -1647,17 +1272,14 @@ canvas_view_get_container_uri (NautilusCanvasContainer *container,
 static void
 canvas_view_move_copy_items (NautilusCanvasContainer *container,
                              const GList             *item_uris,
-                             GArray                  *relative_item_points,
                              const char              *target_dir,
                              int                      copy_action,
-                             int                      x,
-                             int                      y,
                              NautilusFilesView       *view)
 {
     nautilus_clipboard_clear_if_colliding_uris (GTK_WIDGET (view),
                                                 item_uris);
-    nautilus_files_view_move_copy_items (view, item_uris, relative_item_points, target_dir,
-                                         copy_action, x, y);
+    nautilus_files_view_move_copy_items (view, item_uris, target_dir,
+                                         copy_action);
 }
 
 static void
@@ -1675,95 +1297,16 @@ nautilus_canvas_view_update_click_mode (NautilusCanvasView *canvas_view)
                                                      click_mode == NAUTILUS_CLICK_POLICY_SINGLE);
 }
 
-static gboolean
-get_stored_layout_timestamp (NautilusCanvasContainer *container,
-                             NautilusCanvasIconData  *icon_data,
-                             time_t                  *timestamp,
-                             NautilusCanvasView      *view)
-{
-    NautilusFile *file;
-    NautilusDirectory *directory;
-
-    if (icon_data == NULL)
-    {
-        directory = nautilus_files_view_get_model (NAUTILUS_FILES_VIEW (view));
-        if (directory == NULL)
-        {
-            return FALSE;
-        }
-
-        file = nautilus_directory_get_corresponding_file (directory);
-        *timestamp = nautilus_file_get_time_metadata (file,
-                                                      NAUTILUS_METADATA_KEY_ICON_VIEW_LAYOUT_TIMESTAMP);
-        nautilus_file_unref (file);
-    }
-    else
-    {
-        *timestamp = nautilus_file_get_time_metadata (NAUTILUS_FILE (icon_data),
-                                                      NAUTILUS_METADATA_KEY_ICON_POSITION_TIMESTAMP);
-    }
-
-    return TRUE;
-}
-
-static gboolean
-store_layout_timestamp (NautilusCanvasContainer *container,
-                        NautilusCanvasIconData  *icon_data,
-                        const time_t            *timestamp,
-                        NautilusCanvasView      *view)
-{
-    NautilusFile *file;
-    NautilusDirectory *directory;
-
-    if (icon_data == NULL)
-    {
-        directory = nautilus_files_view_get_model (NAUTILUS_FILES_VIEW (view));
-        if (directory == NULL)
-        {
-            return FALSE;
-        }
-
-        file = nautilus_directory_get_corresponding_file (directory);
-        nautilus_file_set_time_metadata (file,
-                                         NAUTILUS_METADATA_KEY_ICON_VIEW_LAYOUT_TIMESTAMP,
-                                         (time_t) *timestamp);
-        nautilus_file_unref (file);
-    }
-    else
-    {
-        nautilus_file_set_time_metadata (NAUTILUS_FILE (icon_data),
-                                         NAUTILUS_METADATA_KEY_ICON_POSITION_TIMESTAMP,
-                                         (time_t) *timestamp);
-    }
-
-    return TRUE;
-}
-
-static NautilusCanvasContainer *
-create_canvas_container (NautilusCanvasView *canvas_view)
-{
-    return NAUTILUS_CANVAS_VIEW_CLASS (G_OBJECT_GET_CLASS (canvas_view))->create_canvas_container 
(canvas_view);
-}
-
-static NautilusCanvasContainer *
-real_create_canvas_container (NautilusCanvasView *canvas_view)
-{
-    return nautilus_canvas_view_container_new (canvas_view);
-}
-
 static void
 initialize_canvas_container (NautilusCanvasView      *canvas_view,
                              NautilusCanvasContainer *canvas_container)
 {
     GtkWidget *content_widget;
-    NautilusCanvasViewPrivate *priv;
-
-    priv = nautilus_canvas_view_get_instance_private (canvas_view);
 
     content_widget = nautilus_files_view_get_content_widget (NAUTILUS_FILES_VIEW (canvas_view));
-    priv->canvas_container = GTK_WIDGET (canvas_container);
+    canvas_view->canvas_container = GTK_WIDGET (canvas_container);
     g_object_add_weak_pointer (G_OBJECT (canvas_container),
-                               (gpointer *) &priv->canvas_container);
+                               (gpointer *) &canvas_view->canvas_container);
 
     gtk_widget_set_can_focus (GTK_WIDGET (canvas_container), TRUE);
 
@@ -1781,8 +1324,6 @@ initialize_canvas_container (NautilusCanvasView      *canvas_view,
                              G_CALLBACK (canvas_container_context_click_selection_callback), canvas_view, 0);
     g_signal_connect_object (canvas_container, "context-click-background",
                              G_CALLBACK (canvas_container_context_click_background_callback), canvas_view, 
0);
-    g_signal_connect_object (canvas_container, "icon-position-changed",
-                             G_CALLBACK (icon_position_changed_callback), canvas_view, 0);
     g_signal_connect_object (canvas_container, "selection-changed",
                              G_CALLBACK (selection_changed_callback), canvas_view, 0);
     /* FIXME: many of these should move into fm-canvas-container as virtual methods */
@@ -1798,21 +1339,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",
-                             G_CALLBACK (store_layout_timestamp), canvas_view, 0);
 
     gtk_container_add (GTK_CONTAINER (content_widget),
                        GTK_WIDGET (canvas_container));
@@ -1830,12 +1356,10 @@ canvas_view_handle_netscape_url (NautilusCanvasContainer *container,
                                  const char              *encoded_url,
                                  const char              *target_uri,
                                  GdkDragAction            action,
-                                 int                      x,
-                                 int                      y,
                                  NautilusCanvasView      *view)
 {
     nautilus_files_view_handle_netscape_url_drop (NAUTILUS_FILES_VIEW (view),
-                                                  encoded_url, target_uri, action, x, y);
+                                                  encoded_url, target_uri, action);
 }
 
 static void
@@ -1843,12 +1367,10 @@ canvas_view_handle_uri_list (NautilusCanvasContainer *container,
                              const char              *item_uris,
                              const char              *target_uri,
                              GdkDragAction            action,
-                             int                      x,
-                             int                      y,
                              NautilusCanvasView      *view)
 {
     nautilus_files_view_handle_uri_list_drop (NAUTILUS_FILES_VIEW (view),
-                                              item_uris, target_uri, action, x, y);
+                                              item_uris, target_uri, action);
 }
 
 static void
@@ -1856,12 +1378,10 @@ canvas_view_handle_text (NautilusCanvasContainer *container,
                          const char              *text,
                          const char              *target_uri,
                          GdkDragAction            action,
-                         int                      x,
-                         int                      y,
                          NautilusCanvasView      *view)
 {
     nautilus_files_view_handle_text_drop (NAUTILUS_FILES_VIEW (view),
-                                          text, target_uri, action, x, y);
+                                          text, target_uri, action);
 }
 
 static void
@@ -1871,12 +1391,10 @@ canvas_view_handle_raw (NautilusCanvasContainer *container,
                         const char              *target_uri,
                         const char              *direct_save_uri,
                         GdkDragAction            action,
-                        int                      x,
-                        int                      y,
                         NautilusCanvasView      *view)
 {
     nautilus_files_view_handle_raw_drop (NAUTILUS_FILES_VIEW (view),
-                                         raw_data, length, target_uri, direct_save_uri, action, x, y);
+                                         raw_data, length, target_uri, direct_save_uri, action);
 }
 
 static void
@@ -1935,60 +1453,12 @@ 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;
-    NautilusCanvasViewPrivate *priv;
 
     canvas_view = NAUTILUS_CANVAS_VIEW (object);
-    priv = nautilus_canvas_view_get_instance_private (canvas_view);
-    priv->destroyed = TRUE;
+    canvas_view->destroyed = TRUE;
 
     g_signal_handlers_disconnect_by_func (nautilus_preferences,
                                           default_sort_order_changed_callback,
@@ -2014,13 +1484,10 @@ 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;
 
-    klass->create_canvas_container = real_create_canvas_container;
-
     nautilus_files_view_class->add_files = nautilus_canvas_view_add_files;
     nautilus_files_view_class->begin_loading = nautilus_canvas_view_begin_loading;
     nautilus_files_view_class->bump_zoom_level = nautilus_canvas_view_bump_zoom_level;
@@ -2046,58 +1513,23 @@ 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
 nautilus_canvas_view_init (NautilusCanvasView *canvas_view)
 {
-    NautilusCanvasViewPrivate *priv;
     NautilusCanvasContainer *canvas_container;
     GActionGroup *view_action_group;
     GtkClipboard *clipboard;
 
-    priv = nautilus_canvas_view_get_instance_private (canvas_view);
-
-    priv->sort = &sort_criteria[0];
-    priv->destroyed = FALSE;
+    canvas_view->sort = &sort_criteria[0];
+    canvas_view->destroyed = FALSE;
 
-    canvas_container = create_canvas_container (canvas_view);
+    canvas_container = nautilus_canvas_view_container_new (canvas_view);
     initialize_canvas_container (canvas_view, canvas_container);
 
     g_signal_connect_swapped (nautilus_preferences,
diff --git a/src/nautilus-canvas-view.h b/src/nautilus-canvas-view.h
index 799cc932d..86fbc2ea5 100644
--- a/src/nautilus-canvas-view.h
+++ b/src/nautilus-canvas-view.h
@@ -32,20 +32,11 @@ G_BEGIN_DECLS
 
 #define NAUTILUS_TYPE_CANVAS_VIEW nautilus_canvas_view_get_type()
 
-G_DECLARE_DERIVABLE_TYPE (NautilusCanvasView, nautilus_canvas_view, NAUTILUS, CANVAS_VIEW, NautilusFilesView)
-
-struct _NautilusCanvasViewClass {
-       NautilusFilesViewClass parent_class;
-
-        NautilusCanvasContainer * (* create_canvas_container) (NautilusCanvasView *canvas_view);
-};
+G_DECLARE_FINAL_TYPE (NautilusCanvasView, nautilus_canvas_view, NAUTILUS, CANVAS_VIEW, NautilusFilesView)
 
 int     nautilus_canvas_view_compare_files (NautilusCanvasView   *canvas_view,
                                          NautilusFile *a,
                                          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-dbus-manager.c b/src/nautilus-dbus-manager.c
index 77d00d615..ae09247e7 100644
--- a/src/nautilus-dbus-manager.c
+++ b/src/nautilus-dbus-manager.c
@@ -112,9 +112,7 @@ handle_copy_uris (NautilusDBusFileOperations  *object,
                                        g_file_new_for_uri (sources[idx]));
     }
 
-    nautilus_file_operations_copy (source_files, NULL,
-                                   dest_dir,
-                                   NULL, NULL, NULL);
+    nautilus_file_operations_copy (source_files, dest_dir, NULL, NULL, NULL);
 
     g_list_free_full (source_files, g_object_unref);
     g_object_unref (dest_dir);
diff --git a/src/nautilus-directory-notify.h b/src/nautilus-directory-notify.h
index a55a8363f..92130e749 100644
--- a/src/nautilus-directory-notify.h
+++ b/src/nautilus-directory-notify.h
@@ -32,13 +32,6 @@ typedef struct {
        GFile *to;
 } GFilePair;
 
-typedef struct {
-       GFile *location;
-       gboolean set;
-       GdkPoint point;
-       int screen;
-} NautilusFileChangesQueuePosition;
-
 /* Almost-public change notification calls */
 void nautilus_directory_notify_files_added   (GList *files);
 void nautilus_directory_notify_files_moved   (GList *file_pairs);
@@ -52,7 +45,6 @@ void nautilus_directory_schedule_metadata_remove (GList        *files);
 void nautilus_directory_schedule_metadata_copy_by_uri   (GList        *uri_pairs);
 void nautilus_directory_schedule_metadata_move_by_uri   (GList        *uri_pairs);
 void nautilus_directory_schedule_metadata_remove_by_uri (GList        *uris);
-void nautilus_directory_schedule_position_set    (GList        *position_setting_list);
 
 /* Change notification hack.
  * This is called when code modifies the file and it needs to trigger
diff --git a/src/nautilus-directory.c b/src/nautilus-directory.c
index 26a5c4b76..884135ca3 100644
--- a/src/nautilus-directory.c
+++ b/src/nautilus-directory.c
@@ -1679,70 +1679,6 @@ nautilus_directory_notify_files_moved (GList *file_pairs)
     g_list_free (new_files_list);
 }
 
-void
-nautilus_directory_schedule_position_set (GList *position_setting_list)
-{
-    GList *p;
-    const NautilusFileChangesQueuePosition *item;
-    NautilusFile *file;
-    char str[64];
-    time_t now;
-
-    time (&now);
-
-    for (p = position_setting_list; p != NULL; p = p->next)
-    {
-        item = (NautilusFileChangesQueuePosition *) p->data;
-
-        file = nautilus_file_get (item->location);
-
-        if (item->set)
-        {
-            g_snprintf (str, sizeof (str), "%d,%d", item->point.x, item->point.y);
-        }
-        else
-        {
-            str[0] = 0;
-        }
-        nautilus_file_set_metadata
-            (file,
-            NAUTILUS_METADATA_KEY_ICON_POSITION,
-            NULL,
-            str);
-
-        if (item->set)
-        {
-            nautilus_file_set_time_metadata
-                (file,
-                NAUTILUS_METADATA_KEY_ICON_POSITION_TIMESTAMP,
-                now);
-        }
-        else
-        {
-            nautilus_file_set_time_metadata
-                (file,
-                NAUTILUS_METADATA_KEY_ICON_POSITION_TIMESTAMP,
-                UNDEFINED_TIME);
-        }
-
-        if (item->set)
-        {
-            g_snprintf (str, sizeof (str), "%d", item->screen);
-        }
-        else
-        {
-            str[0] = 0;
-        }
-        nautilus_file_set_metadata
-            (file,
-            NAUTILUS_METADATA_KEY_SCREEN,
-            NULL,
-            str);
-
-        nautilus_file_unref (file);
-    }
-}
-
 gboolean
 nautilus_directory_contains_file (NautilusDirectory *directory,
                                   NautilusFile      *file)
diff --git a/src/nautilus-dnd.c b/src/nautilus-dnd.c
index 575d12f2a..4ead3f831 100644
--- a/src/nautilus-dnd.c
+++ b/src/nautilus-dnd.c
@@ -332,42 +332,6 @@ nautilus_drag_items_local (const char  *target_uri_string,
                                               ((NautilusDragSelectionItem *) selection_list->data)->uri);
 }
 
-gboolean
-nautilus_drag_items_on_desktop (const GList *selection_list)
-{
-    char *uri;
-    GFile *desktop, *item, *parent;
-    gboolean result;
-
-    /* check if the first item on the list is in trash.
-     * FIXME:
-     * we should really test each item but that would be slow for large selections
-     * and currently dropped items can only be from the same container
-     */
-    uri = ((NautilusDragSelectionItem *) selection_list->data)->uri;
-    if (eel_uri_is_desktop (uri))
-    {
-        return TRUE;
-    }
-
-    desktop = nautilus_get_desktop_location ();
-
-    item = g_file_new_for_uri (uri);
-    parent = g_file_get_parent (item);
-    g_object_unref (item);
-
-    result = FALSE;
-
-    if (parent)
-    {
-        result = g_file_equal (desktop, parent);
-        g_object_unref (parent);
-    }
-    g_object_unref (desktop);
-
-    return result;
-}
-
 GdkDragAction
 nautilus_drag_default_drop_action_for_netscape_url (GdkDragContext *context)
 {
@@ -535,14 +499,6 @@ nautilus_drag_default_drop_action_for_icons (GdkDragContext *context,
     dropped_file = ((NautilusDragSelectionItem *) items->data)->file;
     target_file = nautilus_file_get_by_uri (target_uri_string);
 
-    if (eel_uri_is_desktop (dropped_uri) &&
-        !eel_uri_is_desktop (target_uri_string))
-    {
-        /* Desktop items only move on the desktop */
-        *action = 0;
-        return;
-    }
-
     /*
      * Check for trash URI.  We do a find_directory for any Trash directory.
      * Passing 0 permissions as gnome-vfs would override the permissions
@@ -567,26 +523,6 @@ nautilus_drag_default_drop_action_for_icons (GdkDragContext *context,
         nautilus_file_unref (target_file);
         return;
     }
-    else if (eel_uri_is_desktop (target_uri_string))
-    {
-        target = nautilus_get_desktop_location ();
-
-        nautilus_file_unref (target_file);
-        target_file = nautilus_file_get (target);
-
-        if (eel_uri_is_desktop (dropped_uri))
-        {
-            /* Only move to Desktop icons */
-            if (actions & GDK_ACTION_MOVE)
-            {
-                *action = GDK_ACTION_MOVE;
-            }
-
-            g_object_unref (target);
-            nautilus_file_unref (target_file);
-            return;
-        }
-    }
     else if (target_file != NULL && nautilus_file_is_archive (target_file))
     {
         *action = GDK_ACTION_COPY;
@@ -1050,22 +986,3 @@ nautilus_drag_autoscroll_stop (NautilusDragInfo *drag_info)
         drag_info->auto_scroll_timeout_id = 0;
     }
 }
-
-gboolean
-nautilus_drag_selection_includes_special_link (GList *selection_list)
-{
-    GList *node;
-    char *uri;
-
-    for (node = selection_list; node != NULL; node = node->next)
-    {
-        uri = ((NautilusDragSelectionItem *) node->data)->uri;
-
-        if (eel_uri_is_desktop (uri))
-        {
-            return TRUE;
-        }
-    }
-
-    return FALSE;
-}
diff --git a/src/nautilus-dnd.h b/src/nautilus-dnd.h
index d4d3bb853..551b21278 100644
--- a/src/nautilus-dnd.h
+++ b/src/nautilus-dnd.h
@@ -106,7 +106,6 @@ gboolean                nautilus_drag_items_local                   (const char           
                *target_uri,
                                                                         const GList                          
*selection_list);
 gboolean                   nautilus_drag_uris_local                    (const char                           
*target_uri,
                                                                         const GList                          
*source_uri_list);
-gboolean                   nautilus_drag_items_on_desktop              (const GList                          
*selection_list);
 void                       nautilus_drag_default_drop_action_for_icons (GdkDragContext                       
*context,
                                                                         const char                           
*target_uri,
                                                                         const GList                          
*items,
@@ -138,8 +137,6 @@ void                            nautilus_drag_autoscroll_start              
(NautilusDragInfo                     *drag_info,
                                                                         gpointer                             
 user_data);
 void                       nautilus_drag_autoscroll_stop               (NautilusDragInfo                     
*drag_info);
 
-gboolean                   nautilus_drag_selection_includes_special_link (GList                              
*selection_list);
-
 NautilusDragInfo *          nautilus_drag_get_source_data                 (GdkDragContext                    
 *context);
 
 GList *                     nautilus_drag_file_list_from_selection_list   (const GList                       
 *selection_list);
diff --git a/src/nautilus-file-changes-queue.c b/src/nautilus-file-changes-queue.c
index 44c2d55c3..8f042fa7f 100644
--- a/src/nautilus-file-changes-queue.c
+++ b/src/nautilus-file-changes-queue.c
@@ -29,8 +29,6 @@ typedef enum
     CHANGE_FILE_CHANGED,
     CHANGE_FILE_REMOVED,
     CHANGE_FILE_MOVED,
-    CHANGE_POSITION_SET,
-    CHANGE_POSITION_REMOVE
 } NautilusFileChangeKind;
 
 typedef struct
@@ -147,38 +145,6 @@ nautilus_file_changes_queue_file_moved (GFile *from,
     nautilus_file_changes_queue_add_common (queue, new_item);
 }
 
-void
-nautilus_file_changes_queue_schedule_position_set (GFile    *location,
-                                                   GdkPoint  point,
-                                                   int       screen)
-{
-    NautilusFileChange *new_item;
-    NautilusFileChangesQueue *queue;
-
-    queue = nautilus_file_changes_queue_get ();
-
-    new_item = g_new (NautilusFileChange, 1);
-    new_item->kind = CHANGE_POSITION_SET;
-    new_item->from = g_object_ref (location);
-    new_item->point = point;
-    new_item->screen = screen;
-    nautilus_file_changes_queue_add_common (queue, new_item);
-}
-
-void
-nautilus_file_changes_queue_schedule_position_remove (GFile *location)
-{
-    NautilusFileChange *new_item;
-    NautilusFileChangesQueue *queue;
-
-    queue = nautilus_file_changes_queue_get ();
-
-    new_item = g_new (NautilusFileChange, 1);
-    new_item->kind = CHANGE_POSITION_REMOVE;
-    new_item->from = g_object_ref (location);
-    nautilus_file_changes_queue_add_common (queue, new_item);
-}
-
 static NautilusFileChange *
 nautilus_file_changes_queue_get_change (NautilusFileChangesQueue *queue)
 {
@@ -234,21 +200,6 @@ pairs_list_free (GList *pairs)
     g_list_free_full (pairs, g_free);
 }
 
-static void
-position_set_list_free (GList *list)
-{
-    GList *p;
-    NautilusFileChangesQueuePosition *item;
-
-    for (p = list; p != NULL; p = p->next)
-    {
-        item = p->data;
-        g_object_unref (item->location);
-    }
-    /* delete the list and the now empty structs */
-    g_list_free_full (list, g_free);
-}
-
 /* go through changes in the change queue, send ones with the same kind
  * in a list to the different nautilus_directory_notify calls
  */
@@ -257,9 +208,7 @@ nautilus_file_changes_consume_changes (gboolean consume_all)
 {
     NautilusFileChange *change;
     GList *additions, *changes, *deletions, *moves;
-    GList *position_set_requests;
     GFilePair *pair;
-    NautilusFileChangesQueuePosition *position_set;
     guint chunk_count;
     NautilusFileChangesQueue *queue;
     gboolean flush_needed;
@@ -269,7 +218,6 @@ nautilus_file_changes_consume_changes (gboolean consume_all)
     changes = NULL;
     deletions = NULL;
     moves = NULL;
-    position_set_requests = NULL;
 
     queue = nautilus_file_changes_queue_get ();
 
@@ -292,27 +240,17 @@ nautilus_file_changes_consume_changes (gboolean consume_all)
         else
         {
             flush_needed = additions != NULL
-                           && change->kind != CHANGE_FILE_ADDED
-                           && change->kind != CHANGE_POSITION_SET
-                           && change->kind != CHANGE_POSITION_REMOVE;
+                           && change->kind != CHANGE_FILE_ADDED;
 
             flush_needed |= changes != NULL
                             && change->kind != CHANGE_FILE_CHANGED;
 
             flush_needed |= moves != NULL
-                            && change->kind != CHANGE_FILE_MOVED
-                            && change->kind != CHANGE_POSITION_SET
-                            && change->kind != CHANGE_POSITION_REMOVE;
+                            && change->kind != CHANGE_FILE_MOVED;
 
             flush_needed |= deletions != NULL
                             && change->kind != CHANGE_FILE_REMOVED;
 
-            flush_needed |= position_set_requests != NULL
-                            && change->kind != CHANGE_POSITION_SET
-                            && change->kind != CHANGE_POSITION_REMOVE
-                            && change->kind != CHANGE_FILE_ADDED
-                            && change->kind != CHANGE_FILE_MOVED;
-
             flush_needed |= !consume_all && chunk_count >= CONSUME_CHANGES_MAX_CHUNK;
             /* we have reached the chunk maximum */
         }
@@ -352,13 +290,6 @@ nautilus_file_changes_consume_changes (gboolean consume_all)
                 g_list_free_full (changes, g_object_unref);
                 changes = NULL;
             }
-            if (position_set_requests != NULL)
-            {
-                position_set_requests = g_list_reverse (position_set_requests);
-                nautilus_directory_schedule_position_set (position_set_requests);
-                position_set_list_free (position_set_requests);
-                position_set_requests = NULL;
-            }
         }
 
         if (change == NULL)
@@ -397,28 +328,6 @@ nautilus_file_changes_consume_changes (gboolean consume_all)
             }
             break;
 
-            case CHANGE_POSITION_SET:
-            {
-                position_set = g_new (NautilusFileChangesQueuePosition, 1);
-                position_set->location = change->from;
-                position_set->set = TRUE;
-                position_set->point = change->point;
-                position_set->screen = change->screen;
-                position_set_requests = g_list_prepend (position_set_requests,
-                                                        position_set);
-            }
-            break;
-
-            case CHANGE_POSITION_REMOVE:
-            {
-                position_set = g_new (NautilusFileChangesQueuePosition, 1);
-                position_set->location = change->from;
-                position_set->set = FALSE;
-                position_set_requests = g_list_prepend (position_set_requests,
-                                                        position_set);
-            }
-            break;
-
             default:
             {
                 g_assert_not_reached ();
diff --git a/src/nautilus-file-changes-queue.h b/src/nautilus-file-changes-queue.h
index aa75238c6..f851b4cbf 100644
--- a/src/nautilus-file-changes-queue.h
+++ b/src/nautilus-file-changes-queue.h
@@ -28,10 +28,6 @@ void nautilus_file_changes_queue_file_changed                    (GFile      *lo
 void nautilus_file_changes_queue_file_removed                    (GFile      *location);
 void nautilus_file_changes_queue_file_moved                      (GFile      *from,
                                                                  GFile      *to);
-void nautilus_file_changes_queue_schedule_position_set           (GFile      *location,
-                                                                 GdkPoint    point,
-                                                                 int         screen);
-void nautilus_file_changes_queue_schedule_position_remove        (GFile      *location);
 
 void nautilus_file_changes_consume_changes                       (gboolean    consume_all);
 
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c
index 546acf835..b5a235f31 100644
--- a/src/nautilus-file-operations.c
+++ b/src/nautilus-file-operations.c
@@ -89,8 +89,6 @@ typedef struct
     GFile *destination;
     GFile *desktop_location;
     GFile *fake_display_source;
-    GdkPoint *icon_positions;
-    int n_icon_positions;
     GHashTable *debuting_files;
     gchar *target_name;
     NautilusCopyCallback done_callback;
@@ -116,8 +114,6 @@ typedef struct
     GFile *src;
     char *src_data;
     int length;
-    GdkPoint position;
-    gboolean has_position;
     GFile *created_file;
     NautilusCreateCallback done_callback;
     gpointer done_callback_data;
@@ -4439,7 +4435,6 @@ static void copy_move_file (CopyMoveJob  *job,
                             SourceInfo   *source_info,
                             TransferInfo *transfer_info,
                             GHashTable   *debuting_files,
-                            GdkPoint     *point,
                             gboolean      overwrite,
                             gboolean     *skipped_file,
                             gboolean      readonly_source_fs);
@@ -4671,7 +4666,7 @@ retry:
             src_file = g_file_get_child (src,
                                          g_file_info_get_name (info));
             copy_move_file (copy_job, src_file, *dest, same_fs, FALSE, &dest_fs_type,
-                            source_info, transfer_info, NULL, NULL, FALSE, &local_skipped_file,
+                            source_info, transfer_info, NULL, FALSE, &local_skipped_file,
                             readonly_source_fs);
 
             if (local_skipped_file)
@@ -5071,7 +5066,6 @@ copy_move_file (CopyMoveJob   *copy_job,
                 SourceInfo    *source_info,
                 TransferInfo  *transfer_info,
                 GHashTable    *debuting_files,
-                GdkPoint      *position,
                 gboolean       overwrite,
                 gboolean      *skipped_file,
                 gboolean       readonly_source_fs)
@@ -5263,14 +5257,6 @@ retry:
         if (debuting_files)
         {
             dest_uri = g_file_get_uri (dest);
-            if (position)
-            {
-                nautilus_file_changes_queue_schedule_position_set (dest, *position, job->screen_num);
-            }
-            else if (eel_uri_is_desktop (dest_uri))
-            {
-                nautilus_file_changes_queue_schedule_position_remove (dest);
-            }
 
             g_hash_table_replace (debuting_files, g_object_ref (dest), GINT_TO_POINTER (TRUE));
         }
@@ -5594,7 +5580,6 @@ copy_files (CopyMoveJob  *job,
     GFile *src;
     gboolean same_fs;
     int i;
-    GdkPoint *point;
     gboolean skipped_file;
     gboolean unique_names;
     GFile *dest;
@@ -5631,16 +5616,6 @@ copy_files (CopyMoveJob  *job,
     {
         src = l->data;
 
-        if (i < job->n_icon_positions)
-        {
-            point = &job->icon_positions[i];
-        }
-        else
-        {
-            point = NULL;
-        }
-
-
         same_fs = FALSE;
         if (dest_fs_id)
         {
@@ -5663,7 +5638,7 @@ copy_files (CopyMoveJob  *job,
                             &dest_fs_type,
                             source_info, transfer_info,
                             job->debuting_files,
-                            point, FALSE, &skipped_file,
+                            FALSE, &skipped_file,
                             readonly_source_fs);
             g_object_unref (dest);
 
@@ -5704,7 +5679,6 @@ copy_task_done (GObject      *source_object,
         g_object_unref (job->desktop_location);
     }
     g_hash_table_unref (job->debuting_files);
-    g_free (job->icon_positions);
     g_free (job->target_name);
 
     g_clear_object (&job->fake_display_source);
@@ -5814,7 +5788,6 @@ nautilus_file_operations_copy_file (GFile                *source_file,
 
 void
 nautilus_file_operations_copy (GList                *files,
-                               GArray               *relative_item_points,
                                GFile                *target_dir,
                                GtkWindow            *parent_window,
                                NautilusCopyCallback  done_callback,
@@ -5832,14 +5805,6 @@ nautilus_file_operations_copy (GList                *files,
     /* Need to indicate the destination for the operation notification open
      * button. */
     nautilus_progress_info_set_destination (((CommonJob *) job)->progress, target_dir);
-    if (relative_item_points != NULL &&
-        relative_item_points->len > 0)
-    {
-        job->icon_positions =
-            g_memdup (relative_item_points->data,
-                      sizeof (GdkPoint) * relative_item_points->len);
-        job->n_icon_positions = relative_item_points->len;
-    }
     job->debuting_files = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, 
NULL);
 
     inhibit_power_manager ((CommonJob *) job, _("Copying Files"));
@@ -5890,29 +5855,17 @@ typedef struct
 {
     GFile *file;
     gboolean overwrite;
-    gboolean has_position;
-    GdkPoint position;
 } MoveFileCopyFallback;
 
 static MoveFileCopyFallback *
 move_copy_file_callback_new (GFile    *file,
-                             gboolean  overwrite,
-                             GdkPoint *position)
+                             gboolean  overwrite)
 {
     MoveFileCopyFallback *fallback;
 
     fallback = g_new (MoveFileCopyFallback, 1);
     fallback->file = file;
     fallback->overwrite = overwrite;
-    if (position)
-    {
-        fallback->has_position = TRUE;
-        fallback->position = *position;
-    }
-    else
-    {
-        fallback->has_position = FALSE;
-    }
 
     return fallback;
 }
@@ -5939,7 +5892,6 @@ move_file_prepare (CopyMoveJob  *move_job,
                    gboolean      same_fs,
                    char        **dest_fs_type,
                    GHashTable   *debuting_files,
-                   GdkPoint     *position,
                    GList       **fallback_files,
                    int           files_left)
 {
@@ -6028,14 +5980,6 @@ retry:
         nautilus_file_changes_queue_file_moved (src, dest);
 
         dest_uri = g_file_get_uri (dest);
-        if (position)
-        {
-            nautilus_file_changes_queue_schedule_position_set (dest, *position, job->screen_num);
-        }
-        else if (eel_uri_is_desktop (dest_uri))
-        {
-            nautilus_file_changes_queue_schedule_position_remove (dest);
-        }
 
         if (job->undo_info != NULL)
         {
@@ -6159,8 +6103,7 @@ retry:
         g_error_free (error);
 
         fallback = move_copy_file_callback_new (src,
-                                                overwrite,
-                                                position);
+                                                overwrite);
         *fallback_files = g_list_prepend (*fallback_files, fallback);
     }
     else if (IS_IO_ERROR (error, CANCELLED))
@@ -6228,7 +6171,6 @@ move_files_prepare (CopyMoveJob  *job,
     GFile *src;
     gboolean same_fs;
     int i;
-    GdkPoint *point;
     int total, left;
 
     common = &job->common;
@@ -6244,16 +6186,6 @@ move_files_prepare (CopyMoveJob  *job,
     {
         src = l->data;
 
-        if (i < job->n_icon_positions)
-        {
-            point = &job->icon_positions[i];
-        }
-        else
-        {
-            point = NULL;
-        }
-
-
         same_fs = FALSE;
         if (dest_fs_id)
         {
@@ -6263,7 +6195,6 @@ move_files_prepare (CopyMoveJob  *job,
         move_file_prepare (job, src, job->destination,
                            same_fs, dest_fs_type,
                            job->debuting_files,
-                           point,
                            fallbacks,
                            left);
         report_preparing_move_progress (job, total, --left);
@@ -6286,7 +6217,6 @@ move_files (CopyMoveJob   *job,
     GFile *src;
     gboolean same_fs;
     int i;
-    GdkPoint *point;
     gboolean skipped_file;
     MoveFileCopyFallback *fallback;
     common = &job->common;
@@ -6301,15 +6231,6 @@ move_files (CopyMoveJob   *job,
         fallback = l->data;
         src = fallback->file;
 
-        if (fallback->has_position)
-        {
-            point = &fallback->position;
-        }
-        else
-        {
-            point = NULL;
-        }
-
         same_fs = FALSE;
         if (dest_fs_id)
         {
@@ -6323,7 +6244,7 @@ move_files (CopyMoveJob   *job,
                         same_fs, FALSE, dest_fs_type,
                         source_info, transfer_info,
                         job->debuting_files,
-                        point, fallback->overwrite, &skipped_file, FALSE);
+                        fallback->overwrite, &skipped_file, FALSE);
         i++;
 
         if (skipped_file)
@@ -6353,7 +6274,6 @@ move_task_done (GObject      *source_object,
     g_list_free_full (job->files, g_object_unref);
     g_object_unref (job->destination);
     g_hash_table_unref (job->debuting_files);
-    g_free (job->icon_positions);
 
     finalize_common ((CommonJob *) job);
 
@@ -6435,7 +6355,6 @@ aborted:
 
 void
 nautilus_file_operations_move (GList                *files,
-                               GArray               *relative_item_points,
                                GFile                *target_dir,
                                GtkWindow            *parent_window,
                                NautilusCopyCallback  done_callback,
@@ -6453,14 +6372,6 @@ nautilus_file_operations_move (GList                *files,
     /* Need to indicate the destination for the operation notification open
      * button. */
     nautilus_progress_info_set_destination (((CommonJob *) job)->progress, target_dir);
-    if (relative_item_points != NULL &&
-        relative_item_points->len > 0)
-    {
-        job->icon_positions =
-            g_memdup (relative_item_points->data,
-                      sizeof (GdkPoint) * relative_item_points->len);
-        job->n_icon_positions = relative_item_points->len;
-    }
     job->debuting_files = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, 
NULL);
 
     inhibit_power_manager ((CommonJob *) job, _("Moving Files"));
@@ -6549,7 +6460,6 @@ link_file (CopyMoveJob  *job,
            GFile        *dest_dir,
            char        **dest_fs_type,
            GHashTable   *debuting_files,
-           GdkPoint     *position,
            int           files_left)
 {
     GFile *src_dir;
@@ -6608,14 +6518,6 @@ retry:
 
         nautilus_file_changes_queue_file_added (dest);
         dest_uri = g_file_get_uri (dest);
-        if (position)
-        {
-            nautilus_file_changes_queue_schedule_position_set (dest, *position, common->screen_num);
-        }
-        else if (eel_uri_is_desktop (dest_uri))
-        {
-            nautilus_file_changes_queue_schedule_position_remove (dest);
-        }
 
         return;
     }
@@ -6738,7 +6640,6 @@ link_task_done (GObject      *source_object,
     g_list_free_full (job->files, g_object_unref);
     g_object_unref (job->destination);
     g_hash_table_unref (job->debuting_files);
-    g_free (job->icon_positions);
 
     finalize_common ((CommonJob *) job);
 
@@ -6754,7 +6655,6 @@ link_task_thread_func (GTask        *task,
     CopyMoveJob *job;
     CommonJob *common;
     GFile *src;
-    GdkPoint *point;
     g_autofree char *dest_fs_type = NULL;
     int total, left;
     int i;
@@ -6785,19 +6685,9 @@ link_task_thread_func (GTask        *task,
     {
         src = l->data;
 
-        if (i < job->n_icon_positions)
-        {
-            point = &job->icon_positions[i];
-        }
-        else
-        {
-            point = NULL;
-        }
-
-
         link_file (job, src, job->destination,
                    &dest_fs_type, job->debuting_files,
-                   point, left);
+                   left);
         report_preparing_link_progress (job, total, --left);
         i++;
     }
@@ -6805,7 +6695,6 @@ link_task_thread_func (GTask        *task,
 
 void
 nautilus_file_operations_link (GList                *files,
-                               GArray               *relative_item_points,
                                GFile                *target_dir,
                                GtkWindow            *parent_window,
                                NautilusCopyCallback  done_callback,
@@ -6822,14 +6711,6 @@ nautilus_file_operations_link (GList                *files,
     /* Need to indicate the destination for the operation notification open
      * button. */
     nautilus_progress_info_set_destination (((CommonJob *) job)->progress, target_dir);
-    if (relative_item_points != NULL &&
-        relative_item_points->len > 0)
-    {
-        job->icon_positions =
-            g_memdup (relative_item_points->data,
-                      sizeof (GdkPoint) * relative_item_points->len);
-        job->n_icon_positions = relative_item_points->len;
-    }
     job->debuting_files = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, 
NULL);
 
     if (!nautilus_file_undo_manager_is_operating ())
@@ -6851,7 +6732,6 @@ nautilus_file_operations_link (GList                *files,
 
 void
 nautilus_file_operations_duplicate (GList                *files,
-                                    GArray               *relative_item_points,
                                     GtkWindow            *parent_window,
                                     NautilusCopyCallback  done_callback,
                                     gpointer              done_callback_data)
@@ -6871,14 +6751,6 @@ nautilus_file_operations_duplicate (GList                *files,
     /* Need to indicate the destination for the operation notification open
      * button. */
     nautilus_progress_info_set_destination (((CommonJob *) job)->progress, parent);
-    if (relative_item_points != NULL &&
-        relative_item_points->len > 0)
-    {
-        job->icon_positions =
-            g_memdup (relative_item_points->data,
-                      sizeof (GdkPoint) * relative_item_points->len);
-        job->n_icon_positions = relative_item_points->len;
-    }
     job->debuting_files = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, 
NULL);
 
     if (!nautilus_file_undo_manager_is_operating ())
@@ -7107,7 +6979,6 @@ callback_for_move_to_trash (GHashTable      *debuting_uris,
 
 void
 nautilus_file_operations_copy_move (const GList          *item_uris,
-                                    GArray               *relative_item_points,
                                     const char           *target_dir,
                                     GdkDragAction         copy_action,
                                     GtkWidget            *parent_view,
@@ -7166,14 +7037,12 @@ nautilus_file_operations_copy_move (const GList          *item_uris,
              g_file_equal (src_dir, dest)))
         {
             nautilus_file_operations_duplicate (locations,
-                                                relative_item_points,
                                                 parent_window,
                                                 done_callback, done_callback_data);
         }
         else
         {
             nautilus_file_operations_copy (locations,
-                                           relative_item_points,
                                            dest,
                                            parent_window,
                                            done_callback, done_callback_data);
@@ -7201,7 +7070,6 @@ nautilus_file_operations_copy_move (const GList          *item_uris,
         else
         {
             nautilus_file_operations_move (locations,
-                                           relative_item_points,
                                            dest,
                                            parent_window,
                                            done_callback, done_callback_data);
@@ -7210,7 +7078,6 @@ nautilus_file_operations_copy_move (const GList          *item_uris,
     else
     {
         nautilus_file_operations_link (locations,
-                                       relative_item_points,
                                        dest,
                                        parent_window,
                                        done_callback, done_callback_data);
@@ -7473,14 +7340,6 @@ retry:
         job->created_file = g_object_ref (dest);
         nautilus_file_changes_queue_file_added (dest);
         dest_uri = g_file_get_uri (dest);
-        if (job->has_position)
-        {
-            nautilus_file_changes_queue_schedule_position_set (dest, job->position, common->screen_num);
-        }
-        else if (eel_uri_is_desktop (dest_uri))
-        {
-            nautilus_file_changes_queue_schedule_position_remove (dest);
-        }
     }
     else
     {
@@ -7656,7 +7515,6 @@ retry:
 
 void
 nautilus_file_operations_new_folder (GtkWidget              *parent_view,
-                                     GdkPoint               *target_point,
                                      const char             *parent_dir,
                                      const char             *folder_name,
                                      NautilusCreateCallback  done_callback,
@@ -7678,11 +7536,6 @@ nautilus_file_operations_new_folder (GtkWidget              *parent_view,
     job->dest_dir = g_file_new_for_uri (parent_dir);
     job->filename = g_strdup (folder_name);
     job->make_dir = TRUE;
-    if (target_point != NULL)
-    {
-        job->position = *target_point;
-        job->has_position = TRUE;
-    }
 
     if (!nautilus_file_undo_manager_is_operating ())
     {
@@ -7696,7 +7549,6 @@ nautilus_file_operations_new_folder (GtkWidget              *parent_view,
 
 void
 nautilus_file_operations_new_file_from_template (GtkWidget              *parent_view,
-                                                 GdkPoint               *target_point,
                                                  const char             *parent_dir,
                                                  const char             *target_filename,
                                                  const char             *template_uri,
@@ -7717,11 +7569,6 @@ nautilus_file_operations_new_file_from_template (GtkWidget              *parent_
     job->done_callback = done_callback;
     job->done_callback_data = done_callback_data;
     job->dest_dir = g_file_new_for_uri (parent_dir);
-    if (target_point != NULL)
-    {
-        job->position = *target_point;
-        job->has_position = TRUE;
-    }
     job->filename = g_strdup (target_filename);
 
     if (template_uri)
@@ -7741,7 +7588,6 @@ nautilus_file_operations_new_file_from_template (GtkWidget              *parent_
 
 void
 nautilus_file_operations_new_file (GtkWidget              *parent_view,
-                                   GdkPoint               *target_point,
                                    const char             *parent_dir,
                                    const char             *target_filename,
                                    const char             *initial_contents,
@@ -7763,11 +7609,6 @@ nautilus_file_operations_new_file (GtkWidget              *parent_view,
     job->done_callback = done_callback;
     job->done_callback_data = done_callback_data;
     job->dest_dir = g_file_new_for_uri (parent_dir);
-    if (target_point != NULL)
-    {
-        job->position = *target_point;
-        job->has_position = TRUE;
-    }
     job->src_data = g_memdup (initial_contents, length);
     job->length = length;
     job->filename = g_strdup (target_filename);
diff --git a/src/nautilus-file-operations.h b/src/nautilus-file-operations.h
index a479ee6e0..e8c6ed393 100644
--- a/src/nautilus-file-operations.h
+++ b/src/nautilus-file-operations.h
@@ -52,7 +52,6 @@ typedef void (* NautilusExtractCallback)   (GList    *outputs,
 /* FIXME: int copy_action should be an enum */
 
 void nautilus_file_operations_copy_move   (const GList               *item_uris,
-                                          GArray                    *relative_item_points,
                                           const char                *target_dir_uri,
                                           GdkDragAction              copy_action,
                                           GtkWidget                 *parent_view,
@@ -67,13 +66,11 @@ void nautilus_file_operations_copy_file (GFile *source_file,
                                         gpointer done_callback_data);
 void nautilus_file_operations_empty_trash (GtkWidget                 *parent_view);
 void nautilus_file_operations_new_folder  (GtkWidget                 *parent_view,
-                                          GdkPoint                  *target_point,
                                           const char                *parent_dir_uri,
                                           const char                *folder_name,
                                           NautilusCreateCallback     done_callback,
                                           gpointer                   done_callback_data);
 void nautilus_file_operations_new_file    (GtkWidget                 *parent_view,
-                                          GdkPoint                  *target_point,
                                           const char                *parent_dir,
                                           const char                *target_filename,
                                           const char                *initial_contents,
@@ -81,7 +78,6 @@ void nautilus_file_operations_new_file    (GtkWidget                 *parent_vie
                                           NautilusCreateCallback     done_callback,
                                           gpointer                   data);
 void nautilus_file_operations_new_file_from_template (GtkWidget               *parent_view,
-                                                     GdkPoint                *target_point,
                                                      const char              *parent_dir,
                                                      const char              *target_filename,
                                                      const char              *template_uri,
@@ -124,24 +120,20 @@ void nautilus_file_operations_mount_volume_full (GtkWindow
                                                 GObject                        *mount_callback_data_object);
 
 void nautilus_file_operations_copy      (GList                *files,
-                                        GArray               *relative_item_points,
                                         GFile                *target_dir,
                                         GtkWindow            *parent_window,
                                         NautilusCopyCallback  done_callback,
                                         gpointer              done_callback_data);
 void nautilus_file_operations_move      (GList                *files,
-                                        GArray               *relative_item_points,
                                         GFile                *target_dir,
                                         GtkWindow            *parent_window,
                                         NautilusCopyCallback  done_callback,
                                         gpointer              done_callback_data);
 void nautilus_file_operations_duplicate (GList                *files,
-                                        GArray               *relative_item_points,
                                         GtkWindow            *parent_window,
                                         NautilusCopyCallback  done_callback,
                                         gpointer              done_callback_data);
 void nautilus_file_operations_link      (GList                *files,
-                                        GArray               *relative_item_points,
                                         GFile                *target_dir,
                                         GtkWindow            *parent_window,
                                         NautilusCopyCallback  done_callback,
diff --git a/src/nautilus-file-undo-operations.c b/src/nautilus-file-undo-operations.c
index e971274ef..73ad6ff05 100644
--- a/src/nautilus-file-undo-operations.c
+++ b/src/nautilus-file-undo-operations.c
@@ -541,7 +541,6 @@ ext_create_link_redo_func (NautilusFileUndoInfoExt *self,
                            GtkWindow               *parent_window)
 {
     nautilus_file_operations_link (g_queue_peek_head_link (self->priv->sources),
-                                   NULL,
                                    self->priv->dest_dir,
                                    parent_window,
                                    file_undo_info_transfer_callback,
@@ -553,7 +552,6 @@ ext_duplicate_redo_func (NautilusFileUndoInfoExt *self,
                          GtkWindow               *parent_window)
 {
     nautilus_file_operations_duplicate (g_queue_peek_head_link (self->priv->sources),
-                                        NULL,
                                         parent_window,
                                         file_undo_info_transfer_callback,
                                         self);
@@ -564,7 +562,6 @@ ext_copy_redo_func (NautilusFileUndoInfoExt *self,
                     GtkWindow               *parent_window)
 {
     nautilus_file_operations_copy (g_queue_peek_head_link (self->priv->sources),
-                                   NULL,
                                    self->priv->dest_dir,
                                    parent_window,
                                    file_undo_info_transfer_callback,
@@ -576,7 +573,6 @@ ext_move_restore_redo_func (NautilusFileUndoInfoExt *self,
                             GtkWindow               *parent_window)
 {
     nautilus_file_operations_move (g_queue_peek_head_link (self->priv->sources),
-                                   NULL,
                                    self->priv->dest_dir,
                                    parent_window,
                                    file_undo_info_transfer_callback,
@@ -629,7 +625,6 @@ ext_move_undo_func (NautilusFileUndoInfoExt *self,
                     GtkWindow               *parent_window)
 {
     nautilus_file_operations_move (g_queue_peek_head_link (self->priv->destinations),
-                                   NULL,
                                    self->priv->src_dir,
                                    parent_window,
                                    file_undo_info_transfer_callback,
@@ -822,7 +817,7 @@ create_from_template_redo_func (NautilusFileUndoInfoCreate *self,
     parent = g_file_get_parent (self->priv->target_file);
     parent_uri = g_file_get_uri (parent);
     new_name = g_file_get_parse_name (self->priv->target_file);
-    nautilus_file_operations_new_file_from_template (NULL, NULL,
+    nautilus_file_operations_new_file_from_template (NULL,
                                                      parent_uri, new_name,
                                                      self->priv->template,
                                                      create_callback, self);
@@ -843,7 +838,7 @@ create_folder_redo_func (NautilusFileUndoInfoCreate *self,
     name = g_file_get_basename (self->priv->target_file);
     parent = g_file_get_parent (self->priv->target_file);
     parent_uri = g_file_get_uri (parent);
-    nautilus_file_operations_new_folder (NULL, NULL, parent_uri, name,
+    nautilus_file_operations_new_folder (NULL, parent_uri, name,
                                          create_callback, self);
 
     g_free (name);
@@ -862,7 +857,7 @@ create_empty_redo_func (NautilusFileUndoInfoCreate *self,
     parent = g_file_get_parent (self->priv->target_file);
     parent_uri = g_file_get_uri (parent);
     new_name = g_file_get_parse_name (self->priv->target_file);
-    nautilus_file_operations_new_file (NULL, NULL, parent_uri,
+    nautilus_file_operations_new_file (NULL, parent_uri,
                                        new_name,
                                        self->priv->template,
                                        self->priv->length,
diff --git a/src/nautilus-file-utilities.c b/src/nautilus-file-utilities.c
index 65b50fa14..e0524038f 100644
--- a/src/nautilus-file-utilities.c
+++ b/src/nautilus-file-utilities.c
@@ -946,7 +946,7 @@ ensure_dirs_task_ready_cb (GObject      *_source,
         locations = locations_from_file_list (files);
 
         nautilus_file_operations_move
-            (locations, NULL,
+            (locations,
             original_dir_location,
             data->parent_window,
             NULL, NULL);
diff --git a/src/nautilus-files-view-dnd.c b/src/nautilus-files-view-dnd.c
index 656229728..ca4714ee6 100644
--- a/src/nautilus-files-view-dnd.c
+++ b/src/nautilus-files-view-dnd.c
@@ -43,39 +43,12 @@
 #define GET_ANCESTOR(obj) \
     GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (obj), GTK_TYPE_WINDOW))
 
-static inline void
-view_widget_to_file_operation_position (NautilusFilesView *view,
-                                        GdkPoint          *position)
-{
-    NautilusFilesViewClass *class = NAUTILUS_FILES_VIEW_GET_CLASS (view);
-
-    if (class->widget_to_file_operation_position != NULL)
-    {
-        class->widget_to_file_operation_position (view, position);
-    }
-}
-
-static void
-view_widget_to_file_operation_position_xy (NautilusFilesView *view,
-                                           int               *x,
-                                           int               *y)
-{
-    GdkPoint position;
-
-    position.x = *x;
-    position.y = *y;
-    view_widget_to_file_operation_position (view, &position);
-    *x = position.x;
-    *y = position.y;
-}
-
 typedef struct
 {
     NautilusFilesView *view;
     char *link_name;
     char *target_uri;
     char *url;
-    GdkPoint point;
 } NetscapeUrlDropLink;
 
 static void
@@ -142,7 +115,6 @@ handle_netscape_url_drop_link_cb (GObject      *source_object,
                                 link_display_name,
                                 icon_name,
                                 data->url,
-                                &data->point,
                                 screen_num,
                                 TRUE);
 
@@ -161,13 +133,10 @@ void
 nautilus_files_view_handle_netscape_url_drop (NautilusFilesView *view,
                                               const char        *encoded_url,
                                               const char        *target_uri,
-                                              GdkDragAction      action,
-                                              int                x,
-                                              int                y)
+                                              GdkDragAction      action)
 {
     char *url, *title;
     char *link_name;
-    GArray *points = NULL;
     char **bits;
     GList *uri_list = NULL;
     GFile *f;
@@ -209,8 +178,6 @@ nautilus_files_view_handle_netscape_url_drop (NautilusFilesView *view,
 
     f = g_file_new_for_uri (url);
 
-    view_widget_to_file_operation_position_xy (view, &x, &y);
-
     /* We don't support GDK_ACTION_ASK or GDK_ACTION_PRIVATE
      * and we don't support combinations either. */
     if ((action != GDK_ACTION_DEFAULT) &&
@@ -241,8 +208,6 @@ nautilus_files_view_handle_netscape_url_drop (NautilusFilesView *view,
 
             data = g_slice_new0 (NetscapeUrlDropLink);
             data->link_name = link_name;
-            data->point.x = x;
-            data->point.y = y;
             data->view = g_object_ref (view);
             data->target_uri = g_strdup (target_uri);
             data->url = g_strdup (url);
@@ -256,22 +221,13 @@ nautilus_files_view_handle_netscape_url_drop (NautilusFilesView *view,
     }
     else
     {
-        GdkPoint tmp_point = { 0, 0 };
-
-        if (eel_uri_is_desktop (target_uri))
-        {
-            /* pass in a 1-item array of icon positions, relative to x, y */
-            points = g_array_new (FALSE, TRUE, sizeof (GdkPoint));
-            g_array_append_val (points, tmp_point);
-        }
         uri_list = g_list_append (uri_list, url);
 
-        nautilus_files_view_move_copy_items (view, uri_list, points,
+        nautilus_files_view_move_copy_items (view, uri_list,
                                              target_uri,
-                                             action, x, y);
+                                             action);
 
         g_list_free (uri_list);
-        g_array_free (points, TRUE);
     }
 
     g_object_unref (f);
@@ -282,16 +238,13 @@ void
 nautilus_files_view_handle_uri_list_drop (NautilusFilesView *view,
                                           const char        *item_uris,
                                           const char        *target_uri,
-                                          GdkDragAction      action,
-                                          int                x,
-                                          int                y)
+                                          GdkDragAction      action)
 {
     gchar **uri_list;
     GList *real_uri_list = NULL;
     char *container_uri;
     const char *real_target_uri;
     int n_uris, i;
-    GArray *points;
 
     if (item_uris == NULL)
     {
@@ -348,32 +301,13 @@ nautilus_files_view_handle_uri_list_drop (NautilusFilesView *view,
     }
 
     real_target_uri = target_uri != NULL ? target_uri : container_uri;
-    if (n_uris == 1 && eel_uri_is_desktop (real_target_uri))
-    {
-        GdkPoint tmp_point = { 0, 0 };
-
-        /* pass in a 1-item array of icon positions, relative to x, y */
-        points = g_array_new (FALSE, TRUE, sizeof (GdkPoint));
-        g_array_append_val (points, tmp_point);
-    }
-    else
-    {
-        points = NULL;
-    }
-
-    view_widget_to_file_operation_position_xy (view, &x, &y);
 
-    nautilus_files_view_move_copy_items (view, real_uri_list, points,
+    nautilus_files_view_move_copy_items (view, real_uri_list,
                                          real_target_uri,
-                                         action, x, y);
+                                         action);
 
     g_list_free_full (real_uri_list, g_free);
 
-    if (points != NULL)
-    {
-        g_array_free (points, TRUE);
-    }
-
     g_free (container_uri);
 }
 
@@ -455,13 +389,10 @@ void
 nautilus_files_view_handle_text_drop (NautilusFilesView *view,
                                       const char        *text,
                                       const char        *target_uri,
-                                      GdkDragAction      action,
-                                      int                x,
-                                      int                y)
+                                      GdkDragAction      action)
 {
     int length;
     char *container_uri;
-    GdkPoint pos;
     char *filename;
 
     if (text == NULL)
@@ -480,10 +411,6 @@ nautilus_files_view_handle_text_drop (NautilusFilesView *view,
 
     length = strlen (text);
 
-    pos.x = x;
-    pos.y = y;
-    view_widget_to_file_operation_position (view, &pos);
-
     /* try to get text to use as a filename */
     filename = get_drop_filename (text);
 
@@ -491,8 +418,7 @@ nautilus_files_view_handle_text_drop (NautilusFilesView *view,
                                                         target_uri != NULL ? target_uri : container_uri,
                                                         filename,
                                                         text,
-                                                        length,
-                                                        &pos);
+                                                        length);
     g_free (filename);
     g_free (container_uri);
 }
@@ -503,13 +429,10 @@ nautilus_files_view_handle_raw_drop (NautilusFilesView *view,
                                      int                length,
                                      const char        *target_uri,
                                      const char        *direct_save_uri,
-                                     GdkDragAction      action,
-                                     int                x,
-                                     int                y)
+                                     GdkDragAction      action)
 {
     char *container_uri, *filename;
     GFile *direct_save_full;
-    GdkPoint pos;
 
     if (raw_data == NULL)
     {
@@ -525,10 +448,6 @@ nautilus_files_view_handle_raw_drop (NautilusFilesView *view,
         g_assert (container_uri != NULL);
     }
 
-    pos.x = x;
-    pos.y = y;
-    view_widget_to_file_operation_position (view, &pos);
-
     filename = NULL;
     if (direct_save_uri != NULL)
     {
@@ -545,7 +464,7 @@ nautilus_files_view_handle_raw_drop (NautilusFilesView *view,
 
     nautilus_files_view_new_file_with_initial_contents (
         view, target_uri != NULL ? target_uri : container_uri,
-        filename, raw_data, length, &pos);
+        filename, raw_data, length);
 
     g_free (container_uri);
     g_free (filename);
@@ -580,9 +499,9 @@ nautilus_files_view_drop_proxy_received_uris (NautilusFilesView *view,
     nautilus_clipboard_clear_if_colliding_uris (GTK_WIDGET (view),
                                                 source_uri_list);
 
-    nautilus_files_view_move_copy_items (view, source_uri_list, NULL,
+    nautilus_files_view_move_copy_items (view, source_uri_list,
                                          target_uri != NULL ? target_uri : container_uri,
-                                         action, 0, 0);
+                                         action);
 
     g_free (container_uri);
 }
diff --git a/src/nautilus-files-view-dnd.h b/src/nautilus-files-view-dnd.h
index 1680e0a19..0b946d994 100644
--- a/src/nautilus-files-view-dnd.h
+++ b/src/nautilus-files-view-dnd.h
@@ -32,29 +32,21 @@
 void nautilus_files_view_handle_netscape_url_drop (NautilusFilesView *view,
                                                    const char        *encoded_url,
                                                    const char        *target_uri,
-                                                   GdkDragAction      action,
-                                                   int                x,
-                                                   int                y);
+                                                   GdkDragAction      action);
 void nautilus_files_view_handle_uri_list_drop     (NautilusFilesView *view,
                                                    const char        *item_uris,
                                                    const char        *target_uri,
-                                                   GdkDragAction      action,
-                                                   int                x,
-                                                   int                y);
+                                                   GdkDragAction      action);
 void nautilus_files_view_handle_text_drop         (NautilusFilesView *view,
                                                    const char        *text,
                                                    const char        *target_uri,
-                                                   GdkDragAction      action,
-                                                   int                x,
-                                                   int                y);
+                                                   GdkDragAction      action);
 void nautilus_files_view_handle_raw_drop          (NautilusFilesView *view,
                                                    const char        *raw_data,
                                                    int                length,
                                                    const char        *target_uri,
                                                    const char        *direct_save_uri,
-                                                   GdkDragAction      action,
-                                                   int                x,
-                                                   int                y);
+                                                   GdkDragAction      action);
 void nautilus_files_view_handle_hover             (NautilusFilesView *view,
                                                    const char        *target_uri);
 
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 2d5465aee..beb5cdf38 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -689,14 +689,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
@@ -1170,11 +1162,6 @@ get_view_directory (NautilusFilesView *view)
     priv = nautilus_files_view_get_instance_private (view);
 
     uri = nautilus_directory_get_uri (priv->model);
-    if (eel_uri_is_desktop (uri))
-    {
-        g_free (uri);
-        uri = nautilus_get_desktop_directory_uri ();
-    }
     f = g_file_new_for_uri (uri);
     path = g_file_get_path (f);
     g_object_unref (f);
@@ -1874,10 +1861,8 @@ new_folder_done (GFile    *new_folder,
 
         nautilus_files_view_move_copy_items (directory_view,
                                              uris,
-                                             NULL,
                                              target_uri,
-                                             GDK_ACTION_MOVE,
-                                             0, 0);
+                                             GDK_ACTION_MOVE);
         g_list_free_full (uris, g_free);
         g_free (target_uri);
     }
@@ -1935,29 +1920,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)
 {
@@ -2042,7 +2004,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;
@@ -2066,12 +2027,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,
+                                         parent_uri, name,
                                          new_folder_done, data);
 
     g_clear_object (&priv->new_folder_controller);
@@ -2388,8 +2345,7 @@ nautilus_files_view_new_file_with_initial_contents (NautilusFilesView *view,
                                                     const char        *parent_uri,
                                                     const char        *filename,
                                                     const char        *initial_contents,
-                                                    int                length,
-                                                    GdkPoint          *pos)
+                                                    int                length)
 {
     NewFolderData *data;
 
@@ -2397,13 +2353,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,
+                                       parent_uri, filename,
                                        initial_contents, length,
                                        new_folder_done, data);
 }
@@ -2413,7 +2364,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;
@@ -2431,22 +2381,18 @@ nautilus_files_view_new_file (NautilusFilesView *directory_view,
                                                             parent_uri != NULL ? parent_uri : container_uri,
                                                             NULL,
                                                             NULL,
-                                                            0,
-                                                            NULL);
+                                                            0);
         g_free (container_uri);
         return;
     }
 
     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,
                                                      parent_uri != NULL ? parent_uri : container_uri,
                                                      NULL,
                                                      source_uri,
@@ -2629,9 +2575,8 @@ handle_clipboard_data (NautilusFilesView *view,
 
     if (item_uris != NULL && destination_uri != NULL)
     {
-        nautilus_files_view_move_copy_items (view, item_uris, NULL, destination_uri,
-                                             action,
-                                             0, 0);
+        nautilus_files_view_move_copy_items (view, item_uris, destination_uri,
+                                             action);
 
         /* If items are cut then remove from clipboard */
         if (action == GDK_ACTION_MOVE)
@@ -4738,25 +4683,6 @@ nautilus_files_view_get_content_widget (NautilusFilesView *view)
     return priv->scrolled_window;
 }
 
-static void
-offset_drop_points (GArray *relative_item_points,
-                    int     x_offset,
-                    int     y_offset)
-{
-    guint index;
-
-    if (relative_item_points == NULL)
-    {
-        return;
-    }
-
-    for (index = 0; index < relative_item_points->len; index++)
-    {
-        g_array_index (relative_item_points, GdkPoint, index).x += x_offset;
-        g_array_index (relative_item_points, GdkPoint, index).y += y_offset;
-    }
-}
-
 static gboolean
 nautilus_files_view_special_link_in_selection (NautilusFilesView *view,
                                                GList             *selection)
@@ -5265,7 +5191,6 @@ get_strings_for_environment_variables (NautilusFilesView  *view,
      */
     directory_uri = nautilus_directory_get_uri (priv->model);
     if (g_str_has_prefix (directory_uri, "file:") ||
-        eel_uri_is_desktop (directory_uri) ||
         eel_uri_is_trash (directory_uri))
     {
         *file_paths = get_file_paths_as_newline_delimited_string (view, selected_files);
@@ -5279,11 +5204,6 @@ get_strings_for_environment_variables (NautilusFilesView  *view,
     *uris = get_file_uris_as_newline_delimited_string (view, selected_files);
 
     *uri = nautilus_directory_get_uri (priv->model);
-    if (eel_uri_is_desktop (*uri))
-    {
-        g_free (*uri);
-        *uri = nautilus_get_desktop_directory_uri ();
-    }
 }
 
 /*
@@ -5967,9 +5887,8 @@ on_destination_dialog_response (GtkDialog *dialog,
         }
         uris = g_list_reverse (uris);
 
-        nautilus_files_view_move_copy_items (copy_data->view, uris, NULL, target_uri,
-                                             copy_data->is_move ? GDK_ACTION_MOVE : GDK_ACTION_COPY,
-                                             0, 0);
+        nautilus_files_view_move_copy_items (copy_data->view, uris, target_uri,
+                                             copy_data->is_move ? GDK_ACTION_MOVE : GDK_ACTION_COPY);
 
         g_list_free_full (uris, g_free);
         g_free (target_uri);
@@ -6163,9 +6082,8 @@ action_create_links_in_place (GSimpleAction *action,
 
     destination_uri = nautilus_files_view_get_backing_uri (view);
 
-    nautilus_files_view_move_copy_items (view, item_uris, NULL, destination_uri,
-                                         GDK_ACTION_LINK,
-                                         0, 0);
+    nautilus_files_view_move_copy_items (view, item_uris, destination_uri,
+                                         GDK_ACTION_LINK);
 
     g_list_free_full (item_uris, g_free);
     nautilus_file_list_free (selection);
@@ -6746,7 +6664,6 @@ action_set_as_wallpaper (GSimpleAction *action,
         g_object_unref (target);
         uris = g_list_prepend (NULL, nautilus_file_get_uri (file));
         nautilus_file_operations_copy_move (uris,
-                                            NULL,
                                             target_uri,
                                             GDK_ACTION_COPY,
                                             GTK_WIDGET (user_data),
@@ -8861,14 +8778,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)
 {
@@ -8917,21 +8826,11 @@ nautilus_files_view_get_uri (NautilusFilesView *view)
 void
 nautilus_files_view_move_copy_items (NautilusFilesView *view,
                                      const GList       *item_uris,
-                                     GArray            *relative_item_points,
                                      const char        *target_uri,
-                                     int                copy_action,
-                                     int                x,
-                                     int                y)
+                                     int                copy_action)
 {
     NautilusFile *target_file;
 
-    g_assert (relative_item_points == NULL
-              || relative_item_points->len == 0
-              || g_list_length ((GList *) item_uris) == relative_item_points->len);
-
-    /* add the drop location to the icon offsets */
-    offset_drop_points (relative_item_points, x, y);
-
     target_file = nautilus_file_get_existing_by_uri (target_uri);
     /* special-case "command:" here instead of starting a move/copy */
     if (target_file != NULL && nautilus_file_is_launcher (target_file))
@@ -8985,7 +8884,7 @@ nautilus_files_view_move_copy_items (NautilusFilesView *view,
     nautilus_file_unref (target_file);
 
     nautilus_file_operations_copy_move
-        (item_uris, relative_item_points,
+        (item_uris,
         target_uri, copy_action, GTK_WIDGET (view),
         copy_move_done_callback, pre_copy_move (view));
 }
@@ -9579,7 +9478,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..8b49b346c 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.
          */
@@ -305,17 +298,13 @@ guint               nautilus_files_view_get_view_id                (NautilusView
 char *            nautilus_files_view_get_backing_uri            (NautilusFilesView      *view);
 void              nautilus_files_view_move_copy_items            (NautilusFilesView      *view,
                                                                   const GList            *item_uris,
-                                                                  GArray                 
*relative_item_points,
                                                                   const char             *target_uri,
-                                                                  int                     copy_action,
-                                                                  int                     x,
-                                                                  int                     y);
+                                                                  int                     copy_action);
 void              nautilus_files_view_new_file_with_initial_contents (NautilusFilesView  *view,
                                                                       const char         *parent_uri,
                                                                       const char         *filename,
                                                                       const char         *initial_contents,
-                                                                      int                 length,
-                                                                      GdkPoint           *pos);
+                                                                      int                 length);
 
 /* selection handling */
 void              nautilus_files_view_activate_selection         (NautilusFilesView      *view);
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-link.c b/src/nautilus-link.c
index a16efa212..6ef96144b 100644
--- a/src/nautilus-link.c
+++ b/src/nautilus-link.c
@@ -189,7 +189,6 @@ nautilus_link_local_create (const char     *directory_uri,
                             const char     *display_name,
                             const char     *image,
                             const char     *target_uri,
-                            const GdkPoint *point,
                             int             screen,
                             gboolean        unique_filename)
 {
@@ -197,7 +196,6 @@ nautilus_link_local_create (const char     *directory_uri,
     char *contents;
     GFile *file;
     GList dummy_list;
-    NautilusFileChangesQueuePosition item;
     g_autofree char *link_name = NULL;
     g_autoptr (GFile) directory = NULL;
 
@@ -212,14 +210,7 @@ nautilus_link_local_create (const char     *directory_uri,
         return FALSE;
     }
 
-    if (eel_uri_is_desktop (directory_uri))
-    {
-        real_directory_uri = nautilus_get_desktop_directory_uri ();
-    }
-    else
-    {
-        real_directory_uri = g_strdup (directory_uri);
-    }
+    real_directory_uri = g_strdup (directory_uri);
 
     link_name = g_strdup_printf ("%s.desktop", base_name);
     directory = g_file_new_for_uri (real_directory_uri);
@@ -268,20 +259,6 @@ nautilus_link_local_create (const char     *directory_uri,
     dummy_list.prev = NULL;
     nautilus_directory_notify_files_added (&dummy_list);
 
-    if (point != NULL)
-    {
-        item.location = file;
-        item.set = TRUE;
-        item.point.x = point->x;
-        item.point.y = point->y;
-        item.screen = screen;
-        dummy_list.data = &item;
-        dummy_list.next = NULL;
-        dummy_list.prev = NULL;
-
-        nautilus_directory_schedule_position_set (&dummy_list);
-    }
-
     g_object_unref (file);
     return TRUE;
 }
diff --git a/src/nautilus-link.h b/src/nautilus-link.h
index 72d9c1743..ceb1e5076 100644
--- a/src/nautilus-link.h
+++ b/src/nautilus-link.h
@@ -29,7 +29,6 @@ gboolean         nautilus_link_local_create                      (const char
                                                                  const char        *display_name,
                                                                  const char        *image,
                                                                  const char        *target_uri,
-                                                                 const GdkPoint    *point,
                                                                  int                screen,
                                                                  gboolean           unique_filename);
 gboolean         nautilus_link_local_set_text                    (const char        *uri,
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index 89e54cb09..0e2d678b3 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -1304,12 +1304,10 @@ list_view_handle_netscape_url (NautilusTreeViewDragDest *dest,
                                const char               *encoded_url,
                                const char               *target_uri,
                                GdkDragAction             action,
-                               int                       x,
-                               int                       y,
                                NautilusListView         *view)
 {
     nautilus_files_view_handle_netscape_url_drop (NAUTILUS_FILES_VIEW (view),
-                                                  encoded_url, target_uri, action, x, y);
+                                                  encoded_url, target_uri, action);
 }
 
 static void
@@ -1317,12 +1315,10 @@ list_view_handle_uri_list (NautilusTreeViewDragDest *dest,
                            const char               *item_uris,
                            const char               *target_uri,
                            GdkDragAction             action,
-                           int                       x,
-                           int                       y,
                            NautilusListView         *view)
 {
     nautilus_files_view_handle_uri_list_drop (NAUTILUS_FILES_VIEW (view),
-                                              item_uris, target_uri, action, x, y);
+                                              item_uris, target_uri, action);
 }
 
 static void
@@ -1330,12 +1326,10 @@ list_view_handle_text (NautilusTreeViewDragDest *dest,
                        const char               *text,
                        const char               *target_uri,
                        GdkDragAction             action,
-                       int                       x,
-                       int                       y,
                        NautilusListView         *view)
 {
     nautilus_files_view_handle_text_drop (NAUTILUS_FILES_VIEW (view),
-                                          text, target_uri, action, x, y);
+                                          text, target_uri, action);
 }
 
 static void
@@ -1345,13 +1339,11 @@ list_view_handle_raw (NautilusTreeViewDragDest *dest,
                       const char               *target_uri,
                       const char               *direct_save_uri,
                       GdkDragAction             action,
-                      int                       x,
-                      int                       y,
                       NautilusListView         *view)
 {
     nautilus_files_view_handle_raw_drop (NAUTILUS_FILES_VIEW (view),
                                          raw_data, length, target_uri, direct_save_uri,
-                                         action, x, y);
+                                         action);
 }
 
 static void
@@ -1367,8 +1359,6 @@ move_copy_items_callback (NautilusTreeViewDragDest *dest,
                           const GList              *item_uris,
                           const char               *target_uri,
                           guint                     action,
-                          int                       x,
-                          int                       y,
                           gpointer                  user_data)
 {
     NautilusFilesView *view = user_data;
@@ -1377,10 +1367,8 @@ move_copy_items_callback (NautilusTreeViewDragDest *dest,
                                                 item_uris);
     nautilus_files_view_move_copy_items (view,
                                          item_uris,
-                                         NULL,
                                          target_uri,
-                                         action,
-                                         x, y);
+                                         action);
 }
 
 static void
@@ -3489,14 +3477,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 +3783,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..db176fb64 100644
--- a/src/nautilus-metadata.c
+++ b/src/nautilus-metadata.c
@@ -24,12 +24,8 @@ static char *used_metadata_names[] =
 {
     NAUTILUS_METADATA_KEY_LOCATION_BACKGROUND_COLOR,
     NAUTILUS_METADATA_KEY_LOCATION_BACKGROUND_IMAGE,
-    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,8 +40,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,
     NAUTILUS_METADATA_KEY_CUSTOM_ICON_NAME,
diff --git a/src/nautilus-metadata.h b/src/nautilus-metadata.h
index c4a303ec5..5232315f2 100644
--- a/src/nautilus-metadata.h
+++ b/src/nautilus-metadata.h
@@ -34,13 +34,8 @@
 #define NAUTILUS_METADATA_KEY_LOCATION_BACKGROUND_COLOR        "folder-background-color"
 #define NAUTILUS_METADATA_KEY_LOCATION_BACKGROUND_IMAGE        "folder-background-image"
 
-#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"
@@ -58,8 +53,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"
 #define NAUTILUS_METADATA_KEY_CUSTOM_ICON                      "custom-icon"
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-recent.c b/src/nautilus-recent.c
index ab50fef8f..08253e01f 100644
--- a/src/nautilus-recent.c
+++ b/src/nautilus-recent.c
@@ -51,8 +51,7 @@ nautilus_recent_add_file (NautilusFile *file,
     /* do not add trash:// etc */
     if (eel_uri_is_trash (uri) ||
         eel_uri_is_search (uri) ||
-        eel_uri_is_recent (uri) ||
-        eel_uri_is_desktop (uri))
+        eel_uri_is_recent (uri))
     {
         g_free (uri);
         return;
diff --git a/src/nautilus-tree-view-drag-dest.c b/src/nautilus-tree-view-drag-dest.c
index 42868e3bd..7a15d7170 100644
--- a/src/nautilus-tree-view-drag-dest.c
+++ b/src/nautilus-tree-view-drag-dest.c
@@ -752,17 +752,8 @@ receive_uris (NautilusTreeViewDragDest *dest,
 
     if (real_action == GDK_ACTION_ASK)
     {
-        if (nautilus_drag_selection_includes_special_link (dest->details->drag_list))
-        {
-            /* We only want to move the trash */
-            action = GDK_ACTION_MOVE;
-        }
-        else
-        {
-            action = GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK;
-        }
-        real_action = nautilus_drag_drop_action_ask
-                          (GTK_WIDGET (dest->details->tree_view), action);
+        action = GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK;
+        real_action = nautilus_drag_drop_action_ask (GTK_WIDGET (dest->details->tree_view), action);
     }
 
     /* We only want to copy external uris */
@@ -890,8 +881,7 @@ receive_dropped_raw (NautilusTreeViewDragDest *dest,
     g_signal_emit (dest, signals[HANDLE_RAW], 0,
                    raw_data, length, drop_target,
                    dest->details->direct_save_uri,
-                   gdk_drag_context_get_selected_action (context),
-                   x, y);
+                   gdk_drag_context_get_selected_action (context));
 
     g_free (drop_target);
 }
@@ -1275,12 +1265,10 @@ nautilus_tree_view_drag_dest_class_init (NautilusTreeViewDragDestClass *class)
                       NULL, NULL,
 
                       g_cclosure_marshal_generic,
-                      G_TYPE_NONE, 5,
+                      G_TYPE_NONE, 3,
                       G_TYPE_POINTER,
                       G_TYPE_STRING,
-                      GDK_TYPE_DRAG_ACTION,
-                      G_TYPE_INT,
-                      G_TYPE_INT);
+                      GDK_TYPE_DRAG_ACTION);
     signals[HANDLE_NETSCAPE_URL] =
         g_signal_new ("handle-netscape-url",
                       G_TYPE_FROM_CLASS (class),
@@ -1289,12 +1277,10 @@ nautilus_tree_view_drag_dest_class_init (NautilusTreeViewDragDestClass *class)
                                        handle_netscape_url),
                       NULL, NULL,
                       g_cclosure_marshal_generic,
-                      G_TYPE_NONE, 5,
+                      G_TYPE_NONE, 3,
                       G_TYPE_STRING,
                       G_TYPE_STRING,
-                      GDK_TYPE_DRAG_ACTION,
-                      G_TYPE_INT,
-                      G_TYPE_INT);
+                      GDK_TYPE_DRAG_ACTION);
     signals[HANDLE_URI_LIST] =
         g_signal_new ("handle-uri-list",
                       G_TYPE_FROM_CLASS (class),
@@ -1303,12 +1289,10 @@ nautilus_tree_view_drag_dest_class_init (NautilusTreeViewDragDestClass *class)
                                        handle_uri_list),
                       NULL, NULL,
                       g_cclosure_marshal_generic,
-                      G_TYPE_NONE, 5,
+                      G_TYPE_NONE, 3,
                       G_TYPE_STRING,
                       G_TYPE_STRING,
-                      GDK_TYPE_DRAG_ACTION,
-                      G_TYPE_INT,
-                      G_TYPE_INT);
+                      GDK_TYPE_DRAG_ACTION);
     signals[HANDLE_TEXT] =
         g_signal_new ("handle-text",
                       G_TYPE_FROM_CLASS (class),
@@ -1317,12 +1301,10 @@ nautilus_tree_view_drag_dest_class_init (NautilusTreeViewDragDestClass *class)
                                        handle_text),
                       NULL, NULL,
                       g_cclosure_marshal_generic,
-                      G_TYPE_NONE, 5,
+                      G_TYPE_NONE, 3,
                       G_TYPE_STRING,
                       G_TYPE_STRING,
-                      GDK_TYPE_DRAG_ACTION,
-                      G_TYPE_INT,
-                      G_TYPE_INT);
+                      GDK_TYPE_DRAG_ACTION);
     signals[HANDLE_RAW] =
         g_signal_new ("handle-raw",
                       G_TYPE_FROM_CLASS (class),
@@ -1331,14 +1313,12 @@ nautilus_tree_view_drag_dest_class_init (NautilusTreeViewDragDestClass *class)
                                        handle_raw),
                       NULL, NULL,
                       g_cclosure_marshal_generic,
-                      G_TYPE_NONE, 7,
+                      G_TYPE_NONE, 5,
                       G_TYPE_POINTER,
                       G_TYPE_INT,
                       G_TYPE_STRING,
                       G_TYPE_STRING,
-                      GDK_TYPE_DRAG_ACTION,
-                      G_TYPE_INT,
-                      G_TYPE_INT);
+                      GDK_TYPE_DRAG_ACTION);
     signals[HANDLE_HOVER] =
         g_signal_new ("handle-hover",
                       G_TYPE_FROM_CLASS (class),
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/nautilus-window-slot-dnd.c b/src/nautilus-window-slot-dnd.c
index b8dd87a07..fea76bf8c 100644
--- a/src/nautilus-window-slot-dnd.c
+++ b/src/nautilus-window-slot-dnd.c
@@ -448,8 +448,7 @@ slot_proxy_handle_drop (GtkWidget                 *widget,
             nautilus_files_view_handle_netscape_url_drop (target_view,
                                                           drag_info->data.netscape_url,
                                                           target_uri,
-                                                          gdk_drag_context_get_selected_action (context),
-                                                          0, 0);
+                                                          gdk_drag_context_get_selected_action (context));
         }
 
 
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index d364115a9..b8452e817 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -226,8 +226,7 @@ real_handles_location (NautilusWindowSlot *self,
     uri = g_file_get_uri(location);
 
     file = nautilus_file_get (location);
-    handles_location = !nautilus_file_is_other_locations (file) &&
-                       !eel_uri_is_desktop (uri);
+    handles_location = !nautilus_file_is_other_locations (file);
     nautilus_file_unref (file);
 
     return handles_location;
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index ccf274644..5106dc463 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -1286,7 +1286,7 @@ places_sidebar_drag_perform_drop_cb (GtkPlacesSidebar *sidebar,
     dest_uri = g_file_get_uri (dest_file);
     source_uri_list = build_uri_list_from_gfile_list (source_file_list);
 
-    nautilus_file_operations_copy_move (source_uri_list, NULL, dest_uri, action, GTK_WIDGET (sidebar), NULL, 
NULL);
+    nautilus_file_operations_copy_move (source_uri_list, dest_uri, action, GTK_WIDGET (sidebar), NULL, NULL);
 
     g_free (dest_uri);
     g_list_free_full (source_uri_list, g_free);
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>
diff --git a/test/test-copy.c b/test/test-copy.c
index c927e47b1..45cb8d168 100644
--- a/test/test-copy.c
+++ b/test/test-copy.c
@@ -75,7 +75,6 @@ main (int   argc,
     manager = nautilus_progress_info_manager_dup_singleton ();
 
     nautilus_file_operations_copy (sources,
-                                   NULL /* GArray *relative_item_points */,
                                    dest,
                                    GTK_WINDOW (window),
                                    copy_done, NULL);



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