summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Neumair <cneumair@gnome.org>2008-09-16 18:24:50 +0000
committerChristian Neumair <cneumair@src.gnome.org>2008-09-16 18:24:50 +0000
commitde40f1d0b876cc951bec68224821acbcd6edd0b1 (patch)
tree908a6a339c33a947a2f5268a16cbc5821e0f78ca
parent61b9ae03d4cc69064998b6922de91e020767f3f1 (diff)
downloadnautilus-de40f1d0b876cc951bec68224821acbcd6edd0b1.tar.gz
Also sort folders before files when the sort criterion is reversed. Fixes
2008-09-16 Christian Neumair <cneumair@gnome.org> * libnautilus-private/nautilus-file.c (nautilus_file_compare_for_sort_internal), (nautilus_file_compare_for_sort), (nautilus_file_compare_for_sort_by_attribute_q): Also sort folders before files when the sort criterion is reversed. Fixes #310919. svn path=/trunk/; revision=14631
-rw-r--r--ChangeLog9
-rw-r--r--libnautilus-private/nautilus-file.c25
2 files changed, 22 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 897487e50..948501269 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2008-09-16 Christian Neumair <cneumair@gnome.org>
+ * libnautilus-private/nautilus-file.c
+ (nautilus_file_compare_for_sort_internal),
+ (nautilus_file_compare_for_sort),
+ (nautilus_file_compare_for_sort_by_attribute_q):
+ Also sort folders before files when the sort criterion is reversed.
+ Fixes #310919.
+
+2008-09-16 Christian Neumair <cneumair@gnome.org>
+
* libnautilus-private/nautilus-autorun.c
(do_autorun_for_content_type):
Center autorun dialog on screen.
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 2c9ab6904..eb425124a 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -2503,7 +2503,8 @@ compare_by_full_path (NautilusFile *file_1, NautilusFile *file_2)
static int
nautilus_file_compare_for_sort_internal (NautilusFile *file_1,
NautilusFile *file_2,
- gboolean directories_first)
+ gboolean directories_first,
+ gboolean reversed)
{
gboolean is_directory_1, is_directory_2;
@@ -2521,9 +2522,9 @@ nautilus_file_compare_for_sort_internal (NautilusFile *file_1,
}
if (file_1->details->sort_order < file_2->details->sort_order) {
- return -1;
+ return reversed ? 1 : -1;
} else if (file_1->details->sort_order > file_2->details->sort_order) {
- return 1;
+ return reversed ? -1 : 1;
}
return 0;
@@ -2557,7 +2558,7 @@ nautilus_file_compare_for_sort (NautilusFile *file_1,
return 0;
}
- result = nautilus_file_compare_for_sort_internal (file_1, file_2, directories_first);
+ result = nautilus_file_compare_for_sort_internal (file_1, file_2, directories_first, reversed);
if (result == 0) {
switch (sort_type) {
@@ -2613,12 +2614,12 @@ nautilus_file_compare_for_sort (NautilusFile *file_1,
default:
g_return_val_if_reached (0);
}
- }
- if (reversed) {
- result = -result;
+ if (reversed) {
+ result = -result;
+ }
}
-
+
return result;
}
@@ -2672,7 +2673,7 @@ nautilus_file_compare_for_sort_by_attribute_q (NautilusFile
/* it is a normal attribute, compare by strings */
- result = nautilus_file_compare_for_sort_internal (file_1, file_2, directories_first);
+ result = nautilus_file_compare_for_sort_internal (file_1, file_2, directories_first, reversed);
if (result == 0) {
char *value_1;
@@ -2689,10 +2690,10 @@ nautilus_file_compare_for_sort_by_attribute_q (NautilusFile
g_free (value_1);
g_free (value_2);
- }
- if (reversed) {
- result = -result;
+ if (reversed) {
+ result = -result;
+ }
}
return result;