diff options
author | Jonathan Blandford <jrb@redhat.com> | 2001-10-29 18:56:00 +0000 |
---|---|---|
committer | Jonathan Blandford <jrb@src.gnome.org> | 2001-10-29 18:56:00 +0000 |
commit | b5ccbdfb675092f2b670a047120137e260130949 (patch) | |
tree | 1bdbc144373390a9ac1bac2bcf81eda63c69a0ed | |
parent | 326f771536de9e9b621a211161827a2f02d43c5e (diff) | |
download | gtk+-b5ccbdfb675092f2b670a047120137e260130949.tar.gz |
fix reordered signal.
Mon Oct 29 13:54:49 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_rows_reordered): fix
reordered signal.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 5 | ||||
-rw-r--r-- | gtk/gtktreemodelsort.c | 68 | ||||
-rw-r--r-- | tests/testtreesort.c | 13 |
9 files changed, 66 insertions, 50 deletions
@@ -1,3 +1,8 @@ +Mon Oct 29 13:54:49 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreemodelsort.c (gtk_tree_model_sort_rows_reordered): fix + reordered signal. + Mon Oct 29 12:27:51 2001 Owen Taylor <otaylor@redhat.com> * gtk/gtkfilesel.c (gtk_file_selection_rename_file): Grab diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 3e220ca885..bd74dc9521 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,8 @@ +Mon Oct 29 13:54:49 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreemodelsort.c (gtk_tree_model_sort_rows_reordered): fix + reordered signal. + Mon Oct 29 12:27:51 2001 Owen Taylor <otaylor@redhat.com> * gtk/gtkfilesel.c (gtk_file_selection_rename_file): Grab diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 3e220ca885..bd74dc9521 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +Mon Oct 29 13:54:49 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreemodelsort.c (gtk_tree_model_sort_rows_reordered): fix + reordered signal. + Mon Oct 29 12:27:51 2001 Owen Taylor <otaylor@redhat.com> * gtk/gtkfilesel.c (gtk_file_selection_rename_file): Grab diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 3e220ca885..bd74dc9521 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,8 @@ +Mon Oct 29 13:54:49 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreemodelsort.c (gtk_tree_model_sort_rows_reordered): fix + reordered signal. + Mon Oct 29 12:27:51 2001 Owen Taylor <otaylor@redhat.com> * gtk/gtkfilesel.c (gtk_file_selection_rename_file): Grab diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 3e220ca885..bd74dc9521 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +Mon Oct 29 13:54:49 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreemodelsort.c (gtk_tree_model_sort_rows_reordered): fix + reordered signal. + Mon Oct 29 12:27:51 2001 Owen Taylor <otaylor@redhat.com> * gtk/gtkfilesel.c (gtk_file_selection_rename_file): Grab diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 3e220ca885..bd74dc9521 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +Mon Oct 29 13:54:49 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreemodelsort.c (gtk_tree_model_sort_rows_reordered): fix + reordered signal. + Mon Oct 29 12:27:51 2001 Owen Taylor <otaylor@redhat.com> * gtk/gtkfilesel.c (gtk_file_selection_rename_file): Grab diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 3e220ca885..bd74dc9521 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +Mon Oct 29 13:54:49 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreemodelsort.c (gtk_tree_model_sort_rows_reordered): fix + reordered signal. + Mon Oct 29 12:27:51 2001 Owen Taylor <otaylor@redhat.com> * gtk/gtkfilesel.c (gtk_file_selection_rename_file): Grab diff --git a/gtk/gtktreemodelsort.c b/gtk/gtktreemodelsort.c index 8977e5ba8c..c353ebccb0 100644 --- a/gtk/gtktreemodelsort.c +++ b/gtk/gtktreemodelsort.c @@ -627,7 +627,6 @@ gtk_tree_model_sort_row_deleted (GtkTreeModel *s_model, if (path == NULL) return; - g_print ("path to be deleted: %s\n", gtk_tree_path_to_string (path)); gtk_tree_model_get_iter (GTK_TREE_MODEL (data), &iter, path); level = SORT_LEVEL (iter.user_data); @@ -676,22 +675,21 @@ gtk_tree_model_sort_rows_reordered (GtkTreeModel *s_model, gint *new_order, gpointer data) { - int i; SortElt *elt; SortLevel *level; - - GtkTreeIter iter; + GtkTreeIter iter; + gint *tmp_array; + int i; GtkTreePath *path; - GtkTreeModelSort *tree_model_sort = GTK_TREE_MODEL_SORT (data); - g_return_if_fail (s_iter != NULL); g_return_if_fail (new_order != NULL); if (s_path == NULL || gtk_tree_path_get_indices (s_path) == NULL) { if (tree_model_sort->root == NULL) return; + path = gtk_tree_path_new (); level = SORT_LEVEL (tree_model_sort->root); } else @@ -700,48 +698,40 @@ gtk_tree_model_sort_rows_reordered (GtkTreeModel *s_model, if (path == NULL) return; gtk_tree_model_get_iter (GTK_TREE_MODEL (data), &iter, path); - gtk_tree_path_free (path); level = SORT_LEVEL (iter.user_data); elt = SORT_ELT (iter.user_data2); if (!elt->children) - return; + { + gtk_tree_path_free (path); + return; + } level = elt->children; } if (level->array->len < 2) - return; - - /** unsorted: set offsets, resort without reordered emission **/ - if (tree_model_sort->sort_column_id == -1) { - path = gtk_tree_model_sort_convert_child_path_to_path (tree_model_sort, - s_path); - - if (!path) - { - return; - } - - for (i = 0; i < level->array->len; i++) - { - g_array_index (level->array, SortElt, i).offset = new_order[i]; - - if (GTK_TREE_MODEL_SORT_CACHE_CHILD_ITERS (tree_model_sort) - && tree_model_sort->sort_column_id == -1) - { - get_child_iter_from_elt_no_cache (tree_model_sort, - &(g_array_index (level->array, SortElt, i).iter), level, &g_array_index (level->array, SortElt, i)); - } - } + gtk_tree_path_free (path); + return; + } - gtk_tree_model_sort_increment_stamp (tree_model_sort); + tmp_array = g_new (int, level->array->len); + for (i = 0; i < level->array->len; i++) + tmp_array[new_order[i]] = g_array_index (level->array, SortElt, i).offset; + for (i = 0; i < level->array->len; i++) + g_array_index (level->array, SortElt, i).offset = tmp_array[i]; + g_free (tmp_array); + + if (tree_model_sort->sort_column_id == -1 && + tree_model_sort->default_sort_func == (GtkTreeIterCompareFunc) 0x1) + { gtk_tree_model_sort_sort_level (tree_model_sort, level, FALSE, FALSE); - + gtk_tree_model_sort_increment_stamp (tree_model_sort); + if (gtk_tree_path_get_depth (path)) { gtk_tree_model_get_iter (GTK_TREE_MODEL (tree_model_sort), @@ -755,18 +745,9 @@ gtk_tree_model_sort_rows_reordered (GtkTreeModel *s_model, gtk_tree_model_rows_reordered (GTK_TREE_MODEL (tree_model_sort), path, NULL, new_order); } - - gtk_tree_path_free (path); - - return; } - /** sorted: update offsets, no emission of reordered signal **/ - for (i = 0; i < level->array->len; i++) - g_array_index (level->array, SortElt, i).offset = - new_order[g_array_index (level->array, SortElt, i).offset]; - - gtk_tree_model_sort_increment_stamp (tree_model_sort); + gtk_tree_path_free (path); } /* Fulfill our model requirements */ @@ -2131,7 +2112,6 @@ gtk_tree_model_sort_free_level (GtkTreeModelSort *tree_model_sort, g_assert (sort_level); - g_print ("freeing a level\n"); if (sort_level->ref_count == 0) { SortLevel *parent_level = sort_level->parent_level; diff --git a/tests/testtreesort.c b/tests/testtreesort.c index 3b18be6f0d..8cdcb116f6 100644 --- a/tests/testtreesort.c +++ b/tests/testtreesort.c @@ -163,9 +163,9 @@ main (int argc, char *argv[]) gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column); - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel), + /* gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel), WORD_COLUMN_1, - GTK_SORT_ASCENDING); + GTK_SORT_ASCENDING);*/ gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view); gtk_window_set_default_size (GTK_WINDOW (window), 400, 400); @@ -230,12 +230,13 @@ main (int argc, char *argv[]) gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4); gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view2), column); - gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (smodel), + /* gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (smodel), (GtkTreeIterCompareFunc)gtk_tree_data_list_compare_func, NULL, NULL); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (smodel), WORD_COLUMN_1, - GTK_SORT_DESCENDING); + GTK_SORT_DESCENDING);*/ + gtk_container_add (GTK_CONTAINER (scrolled_window2), tree_view2); gtk_window_set_default_size (GTK_WINDOW (window2), 400, 400); @@ -301,12 +302,12 @@ main (int argc, char *argv[]) gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4); gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view3), column); - gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (ssmodel), + /* gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (ssmodel), (GtkTreeIterCompareFunc)gtk_tree_data_list_compare_func, NULL, NULL); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (ssmodel), WORD_COLUMN_1, - GTK_SORT_ASCENDING); + GTK_SORT_ASCENDING);*/ gtk_container_add (GTK_CONTAINER (scrolled_window3), tree_view3); gtk_window_set_default_size (GTK_WINDOW (window3), 400, 400); |