diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 7 | ||||
-rw-r--r-- | gtk/gtksequence.c | 25 |
5 files changed, 52 insertions, 1 deletions
@@ -1,3 +1,10 @@ +Mon Nov 29 17:51:51 2004 Søren Sandmann <sandmann@redhat.com> + + * gtk/gtksequence.c (_gtk_sequence_sort_changed): If the item is + already in the right place, don't move it. Bug #157670. + + * gtk/gtksequence.c (already_in_place): New function + Mon Nov 29 17:28:53 2004 Søren Sandmann <sandmann@redhat.com> * gtk/gtksequence.c (_gtk_sequence_sort): Take nodes in reverse diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index b429e2d43c..de120ef2f7 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,10 @@ +Mon Nov 29 17:51:51 2004 Søren Sandmann <sandmann@redhat.com> + + * gtk/gtksequence.c (_gtk_sequence_sort_changed): If the item is + already in the right place, don't move it. Bug #157670. + + * gtk/gtksequence.c (already_in_place): New function + Mon Nov 29 17:28:53 2004 Søren Sandmann <sandmann@redhat.com> * gtk/gtksequence.c (_gtk_sequence_sort): Take nodes in reverse diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index b429e2d43c..de120ef2f7 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,10 @@ +Mon Nov 29 17:51:51 2004 Søren Sandmann <sandmann@redhat.com> + + * gtk/gtksequence.c (_gtk_sequence_sort_changed): If the item is + already in the right place, don't move it. Bug #157670. + + * gtk/gtksequence.c (already_in_place): New function + Mon Nov 29 17:28:53 2004 Søren Sandmann <sandmann@redhat.com> * gtk/gtksequence.c (_gtk_sequence_sort): Take nodes in reverse diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index b429e2d43c..de120ef2f7 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,10 @@ +Mon Nov 29 17:51:51 2004 Søren Sandmann <sandmann@redhat.com> + + * gtk/gtksequence.c (_gtk_sequence_sort_changed): If the item is + already in the right place, don't move it. Bug #157670. + + * gtk/gtksequence.c (already_in_place): New function + Mon Nov 29 17:28:53 2004 Søren Sandmann <sandmann@redhat.com> * gtk/gtksequence.c (_gtk_sequence_sort): Take nodes in reverse diff --git a/gtk/gtksequence.c b/gtk/gtksequence.c index fcfc9b088e..8c81ac9fc6 100644 --- a/gtk/gtksequence.c +++ b/gtk/gtksequence.c @@ -448,6 +448,25 @@ _gtk_sequence_ptr_move (GtkSequencePtr ptr, return _gtk_sequence_node_find_by_pos (ptr, new_pos); } +static gboolean +already_in_place (GtkSequencePtr ptr, + GCompareDataFunc cmp_func, + gpointer data) +{ + SortInfo info; + + info.cmp = cmp_func; + info.data = data; + + if (node_compare (_gtk_sequence_node_prev (ptr), ptr, &info) <= 0 && + node_compare (_gtk_sequence_node_next (ptr), ptr, &info) >= 0) + { + return TRUE; + } + + return FALSE; +} + void _gtk_sequence_sort_changed (GtkSequencePtr ptr, GCompareDataFunc cmp_func, @@ -455,8 +474,12 @@ _gtk_sequence_sort_changed (GtkSequencePtr ptr, { GtkSequence *seq; - + + g_return_if_fail (ptr != NULL); g_return_if_fail (!ptr->is_end); + + if (already_in_place (ptr, cmp_func, cmp_data)) + return; seq = _gtk_sequence_node_get_sequence (ptr); _gtk_sequence_unlink (seq, ptr); |