Merged from stable.

Fri Aug 15 20:06:42 2003  Kristian Rietveld  <kris@gtk.org>

	Merged from stable.

	* gtk/gtktreeview.c (gtk_tree_model_sort_row_changed),
	(gtk_tree_model_sort_level_find_insert),
	(gtk_tree_model_sort_insert_value): fix off-by-one error.
	(#109292 continued, patch from Yann Rouillard).
This commit is contained in:
Kristian Rietveld 2003-08-15 18:13:54 +00:00 committed by Kristian Rietveld
parent 2e299387a7
commit 15885321cb
6 changed files with 55 additions and 18 deletions

View File

@ -1,3 +1,12 @@
Fri Aug 15 20:06:42 2003 Kristian Rietveld <kris@gtk.org>
Merged from stable.
* gtk/gtktreeview.c (gtk_tree_model_sort_row_changed),
(gtk_tree_model_sort_level_find_insert),
(gtk_tree_model_sort_insert_value): fix off-by-one error.
(#109292 continued, patch from Yann Rouillard).
Fri Aug 15 19:43:14 2003 Kristian Rietveld <kris@gtk.org> Fri Aug 15 19:43:14 2003 Kristian Rietveld <kris@gtk.org>
(Note: This is not exactly the same as the patch which went in (Note: This is not exactly the same as the patch which went in

View File

@ -1,3 +1,12 @@
Fri Aug 15 20:06:42 2003 Kristian Rietveld <kris@gtk.org>
Merged from stable.
* gtk/gtktreeview.c (gtk_tree_model_sort_row_changed),
(gtk_tree_model_sort_level_find_insert),
(gtk_tree_model_sort_insert_value): fix off-by-one error.
(#109292 continued, patch from Yann Rouillard).
Fri Aug 15 19:43:14 2003 Kristian Rietveld <kris@gtk.org> Fri Aug 15 19:43:14 2003 Kristian Rietveld <kris@gtk.org>
(Note: This is not exactly the same as the patch which went in (Note: This is not exactly the same as the patch which went in

View File

@ -1,3 +1,12 @@
Fri Aug 15 20:06:42 2003 Kristian Rietveld <kris@gtk.org>
Merged from stable.
* gtk/gtktreeview.c (gtk_tree_model_sort_row_changed),
(gtk_tree_model_sort_level_find_insert),
(gtk_tree_model_sort_insert_value): fix off-by-one error.
(#109292 continued, patch from Yann Rouillard).
Fri Aug 15 19:43:14 2003 Kristian Rietveld <kris@gtk.org> Fri Aug 15 19:43:14 2003 Kristian Rietveld <kris@gtk.org>
(Note: This is not exactly the same as the patch which went in (Note: This is not exactly the same as the patch which went in

View File

@ -1,3 +1,12 @@
Fri Aug 15 20:06:42 2003 Kristian Rietveld <kris@gtk.org>
Merged from stable.
* gtk/gtktreeview.c (gtk_tree_model_sort_row_changed),
(gtk_tree_model_sort_level_find_insert),
(gtk_tree_model_sort_insert_value): fix off-by-one error.
(#109292 continued, patch from Yann Rouillard).
Fri Aug 15 19:43:14 2003 Kristian Rietveld <kris@gtk.org> Fri Aug 15 19:43:14 2003 Kristian Rietveld <kris@gtk.org>
(Note: This is not exactly the same as the patch which went in (Note: This is not exactly the same as the patch which went in

View File

@ -1,3 +1,12 @@
Fri Aug 15 20:06:42 2003 Kristian Rietveld <kris@gtk.org>
Merged from stable.
* gtk/gtktreeview.c (gtk_tree_model_sort_row_changed),
(gtk_tree_model_sort_level_find_insert),
(gtk_tree_model_sort_insert_value): fix off-by-one error.
(#109292 continued, patch from Yann Rouillard).
Fri Aug 15 19:43:14 2003 Kristian Rietveld <kris@gtk.org> Fri Aug 15 19:43:14 2003 Kristian Rietveld <kris@gtk.org>
(Note: This is not exactly the same as the patch which went in (Note: This is not exactly the same as the patch which went in

View File

@ -211,7 +211,7 @@ static void gtk_tree_model_sort_sort (GtkTreeModelSort *tre
static gint gtk_tree_model_sort_level_find_insert (GtkTreeModelSort *tree_model_sort, static gint gtk_tree_model_sort_level_find_insert (GtkTreeModelSort *tree_model_sort,
SortLevel *level, SortLevel *level,
GtkTreeIter *iter, GtkTreeIter *iter,
gboolean skip_sort_elt); gint skip_index);
static gboolean gtk_tree_model_sort_insert_value (GtkTreeModelSort *tree_model_sort, static gboolean gtk_tree_model_sort_insert_value (GtkTreeModelSort *tree_model_sort,
SortLevel *level, SortLevel *level,
GtkTreePath *s_path, GtkTreePath *s_path,
@ -436,7 +436,7 @@ gtk_tree_model_sort_row_changed (GtkTreeModel *s_model,
gboolean free_s_path = FALSE; gboolean free_s_path = FALSE;
gint offset, index = 0, old_index, i; gint index = 0, old_index, i;
g_return_if_fail (start_s_path != NULL || start_s_iter != NULL); g_return_if_fail (start_s_path != NULL || start_s_iter != NULL);
@ -481,11 +481,7 @@ gtk_tree_model_sort_row_changed (GtkTreeModel *s_model,
&tmpiter, start_s_path); &tmpiter, start_s_path);
} }
offset = elt->offset; old_index = elt - SORT_ELT (level->array->data);
for (i = 0; i < level->array->len; i++)
if (elt->offset == g_array_index (level->array, SortElt, i).offset)
old_index = i;
memcpy (&tmp, elt, sizeof (SortElt)); memcpy (&tmp, elt, sizeof (SortElt));
@ -493,12 +489,12 @@ gtk_tree_model_sort_row_changed (GtkTreeModel *s_model,
index = gtk_tree_model_sort_level_find_insert (tree_model_sort, index = gtk_tree_model_sort_level_find_insert (tree_model_sort,
level, level,
&tmp.iter, &tmp.iter,
TRUE); old_index);
else else
index = gtk_tree_model_sort_level_find_insert (tree_model_sort, index = gtk_tree_model_sort_level_find_insert (tree_model_sort,
level, level,
&tmpiter, &tmpiter,
TRUE); old_index);
if (index < old_index) if (index < old_index)
{ {
@ -1671,10 +1667,9 @@ static gint
gtk_tree_model_sort_level_find_insert (GtkTreeModelSort *tree_model_sort, gtk_tree_model_sort_level_find_insert (GtkTreeModelSort *tree_model_sort,
SortLevel *level, SortLevel *level,
GtkTreeIter *iter, GtkTreeIter *iter,
gboolean skip_sort_elt) gint skip_index)
{ {
gint start, middle, end; gint start, middle, end;
gint skip_index;
gint cmp; gint cmp;
SortElt *tmp_elt; SortElt *tmp_elt;
GtkTreeIter tmp_iter; GtkTreeIter tmp_iter;
@ -1706,13 +1701,10 @@ gtk_tree_model_sort_level_find_insert (GtkTreeModelSort *tree_model_sort,
start = 0; start = 0;
end = level->array->len; end = level->array->len;
if (skip_sort_elt) if (skip_index < 0)
{
skip_index = SORT_ELT (iter->user_data2) - SORT_ELT (level->array->data);
end--;
}
else
skip_index = end; skip_index = end;
else
end--;
if (start == end) if (start == end)
return 0; return 0;
@ -1787,7 +1779,7 @@ gtk_tree_model_sort_insert_value (GtkTreeModelSort *tree_model_sort,
else else
index = gtk_tree_model_sort_level_find_insert (tree_model_sort, index = gtk_tree_model_sort_level_find_insert (tree_model_sort,
level, s_iter, level, s_iter,
FALSE); -1);
g_array_insert_vals (level->array, index, &elt, 1); g_array_insert_vals (level->array, index, &elt, 1);
tmp_elt = SORT_ELT (level->array->data); tmp_elt = SORT_ELT (level->array->data);