summaryrefslogtreecommitdiff
path: root/gtk/gtktreedatalist.c
diff options
context:
space:
mode:
authorJonathan Blandford <jrb@redhat.com>2002-01-08 23:48:30 +0000
committerJonathan Blandford <jrb@src.gnome.org>2002-01-08 23:48:30 +0000
commit9f35f366612f82ba48796e0e208eb5e78138a68c (patch)
tree21c2aab2ea5f0d8f82f55756142839e0dc1c4d30 /gtk/gtktreedatalist.c
parent5c71539c263da8502414577eb7ab51c70dece8b2 (diff)
downloadgtk+-9f35f366612f82ba48796e0e208eb5e78138a68c.tar.gz
wow! Am I a moron or what 0 < 1 is not equivalent to strcmp ("a", "b")
Tue Jan 8 18:39:23 2002 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreedatalist.c (gtk_tree_data_list_compare_func): wow! Am I a moron or what 0 < 1 is not equivalent to strcmp ("a", "b")
Diffstat (limited to 'gtk/gtktreedatalist.c')
-rw-r--r--gtk/gtktreedatalist.c64
1 files changed, 55 insertions, 9 deletions
diff --git a/gtk/gtktreedatalist.c b/gtk/gtktreedatalist.c
index ca11a4ecd0..403da218a6 100644
--- a/gtk/gtktreedatalist.c
+++ b/gtk/gtktreedatalist.c
@@ -280,32 +280,78 @@ gtk_tree_data_list_compare_func (GtkTreeModel *model,
switch (G_TYPE_FUNDAMENTAL (type))
{
case G_TYPE_BOOLEAN:
- retval = (g_value_get_int (&a_value) < g_value_get_int (&b_value));
+ if (g_value_get_int (&a_value) < g_value_get_int (&b_value))
+ retval = -1;
+ else if (g_value_get_int (&a_value) == g_value_get_int (&b_value))
+ retval = 0;
+ else
+ retval = 1;
break;
case G_TYPE_CHAR:
- retval = (g_value_get_char (&a_value) < g_value_get_char (&b_value));
+ if (g_value_get_char (&a_value) < g_value_get_char (&b_value))
+ retval = -1;
+ else if (g_value_get_char (&a_value) == g_value_get_char (&b_value))
+ retval = 0;
+ else
+ retval = 1;
break;
case G_TYPE_UCHAR:
- retval = (g_value_get_uchar (&a_value) < g_value_get_uchar (&b_value));
+ if (g_value_get_uchar (&a_value) < g_value_get_uchar (&b_value))
+ retval = -1;
+ else if (g_value_get_uchar (&a_value) == g_value_get_uchar (&b_value))
+ retval = 0;
+ else
+ retval = 1;
break;
case G_TYPE_INT:
- retval = (g_value_get_int (&a_value) < g_value_get_int (&b_value));
+ if (g_value_get_int (&a_value) < g_value_get_int (&b_value))
+ retval = -1;
+ else if (g_value_get_int (&a_value) == g_value_get_int (&b_value))
+ retval = 0;
+ else
+ retval = 1;
break;
case G_TYPE_UINT:
- retval = (g_value_get_uint (&a_value) < g_value_get_uint (&b_value));
+ if (g_value_get_uint (&a_value) < g_value_get_uint (&b_value))
+ retval = -1;
+ else if (g_value_get_uint (&a_value) == g_value_get_uint (&b_value))
+ retval = 0;
+ else
+ retval = 1;
break;
case G_TYPE_ENUM:
/* this is somewhat bogus. */
- retval = (g_value_get_int (&a_value) < g_value_get_int (&b_value));
+ if (g_value_get_int (&a_value) < g_value_get_int (&b_value))
+ retval = -1;
+ else if (g_value_get_int (&a_value) == g_value_get_int (&b_value))
+ retval = 0;
+ else
+ retval = 1;
break;
case G_TYPE_FLAGS:
- retval = (g_value_get_uint (&a_value) < g_value_get_uint (&b_value));
+ /* this is even more bogus. */
+ if (g_value_get_uint (&a_value) < g_value_get_uint (&b_value))
+ retval = -1;
+ else if (g_value_get_uint (&a_value) == g_value_get_uint (&b_value))
+ retval = 0;
+ else
+ retval = 1;
break;
case G_TYPE_FLOAT:
- retval = (g_value_get_float (&a_value) < g_value_get_float (&b_value));
+ if (g_value_get_float (&a_value) < g_value_get_float (&b_value))
+ retval = -1;
+ else if (g_value_get_float (&a_value) == g_value_get_float (&b_value))
+ retval = 0;
+ else
+ retval = 1;
break;
case G_TYPE_DOUBLE:
- retval = (g_value_get_double (&a_value) < g_value_get_double (&b_value));
+ if (g_value_get_double (&a_value) < g_value_get_double (&b_value))
+ retval = -1;
+ else if (g_value_get_double (&a_value) == g_value_get_double (&b_value))
+ retval = 0;
+ else
+ retval = 1;
break;
case G_TYPE_STRING:
stra = g_value_get_string (&a_value);