aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2002-12-06 02:31:30 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2002-12-06 02:31:30 +0800
commit1d8a9f24439696b1f6a5a6aa7dfd6eb1c4ea24f8 (patch)
tree4d2e09297fde85a7711f5450bc20fa1b95ee2318
parent31002ecdfa66ba10a8d12f9192fd3f95df1d68ec (diff)
downloadgsoc2013-evolution-1d8a9f24439696b1f6a5a6aa7dfd6eb1c4ea24f8.tar.gz
gsoc2013-evolution-1d8a9f24439696b1f6a5a6aa7dfd6eb1c4ea24f8.tar.zst
gsoc2013-evolution-1d8a9f24439696b1f6a5a6aa7dfd6eb1c4ea24f8.zip
Add a "collate" sort callback that uses the new g_collate_compare().
2002-12-05 Jeffrey Stedfast <fejj@ximian.com> * e-table-extras.c (ete_init): Add a "collate" sort callback that uses the new g_collate_compare(). 2002-12-05 Jeffrey Stedfast <fejj@ximian.com> * gal/util/e-util.c (g_str_compare): Revert back to using just strcmp - this fixes bug #33933 but reopens bug #26355. (g_collate_compare): New function meant to address the sorting required by bug #26335. svn path=/trunk/; revision=19014
-rw-r--r--e-util/e-util.c31
-rw-r--r--e-util/e-util.h2
-rw-r--r--widgets/table/e-table-extras.c1
3 files changed, 25 insertions, 9 deletions
diff --git a/e-util/e-util.c b/e-util/e-util.c
index c425050c4e..6c50331011 100644
--- a/e-util/e-util.c
+++ b/e-util/e-util.c
@@ -45,27 +45,40 @@
#endif
int
-g_str_compare(const void *x, const void *y)
+g_str_compare (const void *x, const void *y)
{
if (x == NULL || y == NULL) {
if (x == y)
return 0;
else
return x ? -1 : 1;
- }
+ }
+
+ return strcmp (x, y);
+}
+int
+g_collate_compare (const void *x, const void *y)
+{
+ if (x == NULL || y == NULL) {
+ if (x == y)
+ return 0;
+ else
+ return x ? -1 : 1;
+ }
+
return g_utf8_collate (x, y);
}
int
-g_int_compare(const void *x, const void *y)
+g_int_compare (const void *x, const void *y)
{
- if ( GPOINTER_TO_INT(x) < GPOINTER_TO_INT(y) )
- return -1;
- else if ( GPOINTER_TO_INT(x) == GPOINTER_TO_INT(y) )
- return 0;
- else
- return 1;
+ if (GPOINTER_TO_INT (x) < GPOINTER_TO_INT (y))
+ return -1;
+ else if (GPOINTER_TO_INT (x) == GPOINTER_TO_INT (y))
+ return 0;
+ else
+ return 1;
}
char *
diff --git a/e-util/e-util.h b/e-util/e-util.h
index 1d5850ccf2..2937265f6b 100644
--- a/e-util/e-util.h
+++ b/e-util/e-util.h
@@ -139,6 +139,8 @@ typedef enum {
} EFocus;
int g_str_compare (const void *x,
const void *y);
+int g_collate_compare (const void *x,
+ const void *y);
int g_int_compare (const void *x,
const void *y);
char *e_strdup_strip (const char *string);
diff --git a/widgets/table/e-table-extras.c b/widgets/table/e-table-extras.c
index d439da2398..81947a6e94 100644
--- a/widgets/table/e-table-extras.c
+++ b/widgets/table/e-table-extras.c
@@ -164,6 +164,7 @@ ete_init (ETableExtras *extras)
extras->pixbufs = g_hash_table_new(g_str_hash, g_str_equal);
e_table_extras_add_compare(extras, "string", g_str_compare);
+ e_table_extras_add_compare(extras, "collate", g_collate_compare);
e_table_extras_add_compare(extras, "integer", g_int_compare);
e_table_extras_add_compare(extras, "string-integer", e_strint_compare);