summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nautilus-canvas-view-container.c96
-rw-r--r--src/nautilus-canvas-view-container.h3
-rw-r--r--src/nautilus-desktop-canvas-view-container.c91
-rw-r--r--src/nautilus-desktop-canvas-view.c1
4 files changed, 91 insertions, 100 deletions
diff --git a/src/nautilus-canvas-view-container.c b/src/nautilus-canvas-view-container.c
index efcb7356e..b4e0df67e 100644
--- a/src/nautilus-canvas-view-container.c
+++ b/src/nautilus-canvas-view-container.c
@@ -30,7 +30,6 @@
#include <libnautilus-private/nautilus-global-preferences.h>
#include <libnautilus-private/nautilus-file-attributes.h>
#include <libnautilus-private/nautilus-thumbnails.h>
-#include <libnautilus-private/nautilus-desktop-icon-file.h>
G_DEFINE_TYPE (NautilusCanvasViewContainer, nautilus_canvas_view_container, NAUTILUS_TYPE_CANVAS_CONTAINER);
@@ -284,89 +283,6 @@ nautilus_canvas_view_container_get_icon_text (NautilusCanvasContainer *container
}
}
-/* Sort as follows:
- * 0) home link
- * 1) network link
- * 2) mount links
- * 3) other
- * 4) trash link
- */
-typedef enum {
- SORT_HOME_LINK,
- SORT_NETWORK_LINK,
- SORT_MOUNT_LINK,
- SORT_OTHER,
- SORT_TRASH_LINK
-} SortCategory;
-
-static SortCategory
-get_sort_category (NautilusFile *file)
-{
- NautilusDesktopLink *link;
- SortCategory category;
-
- category = SORT_OTHER;
-
- if (NAUTILUS_IS_DESKTOP_ICON_FILE (file)) {
- link = nautilus_desktop_icon_file_get_link (NAUTILUS_DESKTOP_ICON_FILE (file));
- if (link != NULL) {
- switch (nautilus_desktop_link_get_link_type (link)) {
- case NAUTILUS_DESKTOP_LINK_HOME:
- category = SORT_HOME_LINK;
- break;
- case NAUTILUS_DESKTOP_LINK_MOUNT:
- category = SORT_MOUNT_LINK;
- break;
- case NAUTILUS_DESKTOP_LINK_TRASH:
- category = SORT_TRASH_LINK;
- break;
- case NAUTILUS_DESKTOP_LINK_NETWORK:
- category = SORT_NETWORK_LINK;
- break;
- default:
- category = SORT_OTHER;
- break;
- }
- g_object_unref (link);
- }
- }
-
- return category;
-}
-
-static int
-fm_desktop_canvas_container_icons_compare (NautilusCanvasContainer *container,
- NautilusCanvasIconData *data_a,
- NautilusCanvasIconData *data_b)
-{
- NautilusFile *file_a;
- NautilusFile *file_b;
- NautilusFilesView *directory_view;
- SortCategory category_a, category_b;
-
- file_a = (NautilusFile *) data_a;
- file_b = (NautilusFile *) data_b;
-
- directory_view = NAUTILUS_FILES_VIEW (NAUTILUS_CANVAS_VIEW_CONTAINER (container)->view);
- g_return_val_if_fail (directory_view != NULL, 0);
-
- category_a = get_sort_category (file_a);
- category_b = get_sort_category (file_b);
-
- if (category_a == category_b) {
- return nautilus_file_compare_for_sort
- (file_a, file_b, NAUTILUS_FILE_SORT_BY_DISPLAY_NAME,
- nautilus_files_view_should_sort_directories_first (directory_view),
- FALSE);
- }
-
- if (category_a < category_b) {
- return -1;
- } else {
- return +1;
- }
-}
-
static int
nautilus_canvas_view_container_compare_icons (NautilusCanvasContainer *container,
NautilusCanvasIconData *icon_a,
@@ -377,11 +293,6 @@ nautilus_canvas_view_container_compare_icons (NautilusCanvasContainer *container
canvas_view = get_canvas_view (container);
g_return_val_if_fail (canvas_view != NULL, 0);
- if (NAUTILUS_CANVAS_VIEW_CONTAINER (container)->sort_for_desktop) {
- return fm_desktop_canvas_container_icons_compare
- (container, icon_a, icon_b);
- }
-
/* Type unsafe comparisons for performance */
return nautilus_canvas_view_compare_files (canvas_view,
(NautilusFile *)icon_a,
@@ -447,10 +358,3 @@ nautilus_canvas_view_container_new (NautilusCanvasView *view)
(g_object_new (NAUTILUS_TYPE_CANVAS_VIEW_CONTAINER, NULL),
view);
}
-
-void
-nautilus_canvas_view_container_set_sort_desktop (NautilusCanvasViewContainer *container,
- gboolean desktop)
-{
- container->sort_for_desktop = desktop;
-}
diff --git a/src/nautilus-canvas-view-container.h b/src/nautilus-canvas-view-container.h
index b2ab50686..219751922 100644
--- a/src/nautilus-canvas-view-container.h
+++ b/src/nautilus-canvas-view-container.h
@@ -50,7 +50,6 @@ struct NautilusCanvasViewContainer {
NautilusCanvasContainer parent;
NautilusCanvasView *view;
- gboolean sort_for_desktop;
};
struct NautilusCanvasViewContainerClass {
@@ -61,7 +60,5 @@ GType nautilus_canvas_view_container_get_type (void);
NautilusCanvasContainer *nautilus_canvas_view_container_construct (NautilusCanvasViewContainer *canvas_container,
NautilusCanvasView *view);
NautilusCanvasContainer *nautilus_canvas_view_container_new (NautilusCanvasView *view);
-void nautilus_canvas_view_container_set_sort_desktop (NautilusCanvasViewContainer *container,
- gboolean desktop);
#endif /* NAUTILUS_CANVAS_VIEW_CONTAINER_H */
diff --git a/src/nautilus-desktop-canvas-view-container.c b/src/nautilus-desktop-canvas-view-container.c
index 6c76f7424..a92ca4f2a 100644
--- a/src/nautilus-desktop-canvas-view-container.c
+++ b/src/nautilus-desktop-canvas-view-container.c
@@ -26,6 +26,96 @@ struct _NautilusDesktopCanvasViewContainer
G_DEFINE_TYPE (NautilusDesktopCanvasViewContainer, nautilus_desktop_canvas_view_container, NAUTILUS_TYPE_CANVAS_VIEW_CONTAINER)
+/* Sort as follows:
+ * 0) home link
+ * 1) network link
+ * 2) mount links
+ * 3) other
+ * 4) trash link
+ */
+typedef enum {
+ SORT_HOME_LINK,
+ SORT_NETWORK_LINK,
+ SORT_MOUNT_LINK,
+ SORT_OTHER,
+ SORT_TRASH_LINK
+} SortCategory;
+
+static SortCategory
+get_sort_category (NautilusFile *file)
+{
+ NautilusDesktopLink *link;
+ SortCategory category;
+
+ category = SORT_OTHER;
+
+ if (NAUTILUS_IS_DESKTOP_ICON_FILE (file))
+ {
+ link = nautilus_desktop_icon_file_get_link (NAUTILUS_DESKTOP_ICON_FILE (file));
+ if (link != NULL)
+ {
+ switch (nautilus_desktop_link_get_link_type (link))
+ {
+ case NAUTILUS_DESKTOP_LINK_HOME:
+ category = SORT_HOME_LINK;
+ break;
+ case NAUTILUS_DESKTOP_LINK_MOUNT:
+ category = SORT_MOUNT_LINK;
+ break;
+ case NAUTILUS_DESKTOP_LINK_TRASH:
+ category = SORT_TRASH_LINK;
+ break;
+ case NAUTILUS_DESKTOP_LINK_NETWORK:
+ category = SORT_NETWORK_LINK;
+ break;
+ default:
+ category = SORT_OTHER;
+ break;
+ }
+ g_object_unref (link);
+ }
+ }
+
+ return category;
+}
+
+static int
+real_compare_icons (NautilusCanvasContainer *container,
+ NautilusCanvasIconData *data_a,
+ NautilusCanvasIconData *data_b)
+{
+ NautilusFile *file_a;
+ NautilusFile *file_b;
+ NautilusFilesView *directory_view;
+ SortCategory category_a, category_b;
+
+ file_a = (NautilusFile *) data_a;
+ file_b = (NautilusFile *) data_b;
+
+ directory_view = NAUTILUS_FILES_VIEW (NAUTILUS_CANVAS_VIEW_CONTAINER (container)->view);
+ g_return_val_if_fail (directory_view != NULL, 0);
+
+ category_a = get_sort_category (file_a);
+ category_b = get_sort_category (file_b);
+
+ if (category_a == category_b)
+ {
+ return nautilus_file_compare_for_sort (file_a,
+ file_b,
+ NAUTILUS_FILE_SORT_BY_DISPLAY_NAME,
+ nautilus_files_view_should_sort_directories_first (directory_view),
+ FALSE);
+ }
+
+ if (category_a < category_b)
+ {
+ return -1;
+ }
+ else
+ {
+ return +1;
+ }
+}
static void
real_get_icon_text (NautilusCanvasContainer *container,
@@ -102,6 +192,7 @@ nautilus_desktop_canvas_view_container_class_init (NautilusDesktopCanvasViewCont
container_class->get_icon_description = real_get_icon_description;
container_class->get_icon_text = real_get_icon_text;
+ container_class->compare_icons = real_compare_icons;
}
static void
diff --git a/src/nautilus-desktop-canvas-view.c b/src/nautilus-desktop-canvas-view.c
index b53ead937..d86d01d32 100644
--- a/src/nautilus-desktop-canvas-view.c
+++ b/src/nautilus-desktop-canvas-view.c
@@ -757,7 +757,6 @@ nautilus_desktop_canvas_view_init (NautilusDesktopCanvasView *desktop_canvas_vie
}
canvas_container = get_canvas_container (desktop_canvas_view);
- nautilus_canvas_view_container_set_sort_desktop (NAUTILUS_CANVAS_VIEW_CONTAINER (canvas_container), TRUE);
nautilus_canvas_container_set_is_fixed_size (canvas_container, TRUE);
nautilus_canvas_container_set_is_desktop (canvas_container, TRUE);