summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--ChangeLog.pre-2-107
-rw-r--r--ChangeLog.pre-2-67
-rw-r--r--ChangeLog.pre-2-87
-rw-r--r--gtk/gtksequence.c25
5 files changed, 52 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index b429e2d43c..de120ef2f7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);