diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2002-12-06 02:31:30 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2002-12-06 02:31:30 +0800 |
commit | 1d8a9f24439696b1f6a5a6aa7dfd6eb1c4ea24f8 (patch) | |
tree | 4d2e09297fde85a7711f5450bc20fa1b95ee2318 | |
parent | 31002ecdfa66ba10a8d12f9192fd3f95df1d68ec (diff) | |
download | gsoc2013-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.c | 31 | ||||
-rw-r--r-- | e-util/e-util.h | 2 | ||||
-rw-r--r-- | widgets/table/e-table-extras.c | 1 |
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); |