From 9f35f366612f82ba48796e0e208eb5e78138a68c Mon Sep 17 00:00:00 2001 From: Jonathan Blandford Date: Tue, 8 Jan 2002 23:48:30 +0000 Subject: [PATCH] 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 * 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") --- ChangeLog | 5 ++++ ChangeLog.pre-2-0 | 5 ++++ ChangeLog.pre-2-10 | 5 ++++ ChangeLog.pre-2-2 | 5 ++++ ChangeLog.pre-2-4 | 5 ++++ ChangeLog.pre-2-6 | 5 ++++ ChangeLog.pre-2-8 | 5 ++++ gtk/gtktreedatalist.c | 64 +++++++++++++++++++++++++++++++++++++------ gtk/gtktreestore.c | 1 + 9 files changed, 91 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index f5ec51db73..04b7423838 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Jan 8 18:39:23 2002 Jonathan Blandford + + * 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") + Tue Jan 8 18:04:01 2002 Owen Taylor * gtk/gtktoolbar.c (gtk_toolbar_set_icon_size): diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index f5ec51db73..04b7423838 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,8 @@ +Tue Jan 8 18:39:23 2002 Jonathan Blandford + + * 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") + Tue Jan 8 18:04:01 2002 Owen Taylor * gtk/gtktoolbar.c (gtk_toolbar_set_icon_size): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index f5ec51db73..04b7423838 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +Tue Jan 8 18:39:23 2002 Jonathan Blandford + + * 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") + Tue Jan 8 18:04:01 2002 Owen Taylor * gtk/gtktoolbar.c (gtk_toolbar_set_icon_size): diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index f5ec51db73..04b7423838 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,8 @@ +Tue Jan 8 18:39:23 2002 Jonathan Blandford + + * 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") + Tue Jan 8 18:04:01 2002 Owen Taylor * gtk/gtktoolbar.c (gtk_toolbar_set_icon_size): diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index f5ec51db73..04b7423838 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +Tue Jan 8 18:39:23 2002 Jonathan Blandford + + * 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") + Tue Jan 8 18:04:01 2002 Owen Taylor * gtk/gtktoolbar.c (gtk_toolbar_set_icon_size): diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index f5ec51db73..04b7423838 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +Tue Jan 8 18:39:23 2002 Jonathan Blandford + + * 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") + Tue Jan 8 18:04:01 2002 Owen Taylor * gtk/gtktoolbar.c (gtk_toolbar_set_icon_size): diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index f5ec51db73..04b7423838 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +Tue Jan 8 18:39:23 2002 Jonathan Blandford + + * 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") + Tue Jan 8 18:04:01 2002 Owen Taylor * gtk/gtktoolbar.c (gtk_toolbar_set_icon_size): 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); diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c index d9e38832a2..751850aab7 100644 --- a/gtk/gtktreestore.c +++ b/gtk/gtktreestore.c @@ -1794,6 +1794,7 @@ gtk_tree_store_sort_helper (GtkTreeStore *tree_store, i++; } + /* Sort the array */ g_array_sort_with_data (sort_array, gtk_tree_store_compare_func, tree_store); for (i = 0; i < list_length - 1; i++)