diff options
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 13 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 13 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 13 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 13 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 13 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 13 | ||||
-rw-r--r-- | gtk/gtktreemodelsort.c | 91 |
8 files changed, 138 insertions, 44 deletions
@@ -1,3 +1,16 @@ +2002-02-11 Darin Adler <darin@bentspoon.com> + + * gtk/gtktreemodelsort.c: (gtk_tree_model_sort_row_changed): + Consider reordering the row even when there's no sort column, if + there's a default sort function. + (gtk_tree_model_sort_rows_reordered): Use symbolic constants. + (gtk_tree_model_sort_level_find_insert): Add code to handle the + case where there is no sort column, but a default sort function. + (gtk_tree_model_sort_insert_value): Add code to handle the case + where there is no sort column an no default sort function. + (gtk_tree_model_sort_set_model): Use symbolic constant. + (gtk_tree_model_sort_reset_default_sort_func): Use symbolic constant. + 2002-02-11 Sven Neumann <sven@gimp.org> * gtk/gtkfilesel.c: converted the "Delete File" dialog to diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 66e5894fb1..7bd7e1a2ec 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,16 @@ +2002-02-11 Darin Adler <darin@bentspoon.com> + + * gtk/gtktreemodelsort.c: (gtk_tree_model_sort_row_changed): + Consider reordering the row even when there's no sort column, if + there's a default sort function. + (gtk_tree_model_sort_rows_reordered): Use symbolic constants. + (gtk_tree_model_sort_level_find_insert): Add code to handle the + case where there is no sort column, but a default sort function. + (gtk_tree_model_sort_insert_value): Add code to handle the case + where there is no sort column an no default sort function. + (gtk_tree_model_sort_set_model): Use symbolic constant. + (gtk_tree_model_sort_reset_default_sort_func): Use symbolic constant. + 2002-02-11 Sven Neumann <sven@gimp.org> * gtk/gtkfilesel.c: converted the "Delete File" dialog to diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 66e5894fb1..7bd7e1a2ec 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,16 @@ +2002-02-11 Darin Adler <darin@bentspoon.com> + + * gtk/gtktreemodelsort.c: (gtk_tree_model_sort_row_changed): + Consider reordering the row even when there's no sort column, if + there's a default sort function. + (gtk_tree_model_sort_rows_reordered): Use symbolic constants. + (gtk_tree_model_sort_level_find_insert): Add code to handle the + case where there is no sort column, but a default sort function. + (gtk_tree_model_sort_insert_value): Add code to handle the case + where there is no sort column an no default sort function. + (gtk_tree_model_sort_set_model): Use symbolic constant. + (gtk_tree_model_sort_reset_default_sort_func): Use symbolic constant. + 2002-02-11 Sven Neumann <sven@gimp.org> * gtk/gtkfilesel.c: converted the "Delete File" dialog to diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 66e5894fb1..7bd7e1a2ec 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,16 @@ +2002-02-11 Darin Adler <darin@bentspoon.com> + + * gtk/gtktreemodelsort.c: (gtk_tree_model_sort_row_changed): + Consider reordering the row even when there's no sort column, if + there's a default sort function. + (gtk_tree_model_sort_rows_reordered): Use symbolic constants. + (gtk_tree_model_sort_level_find_insert): Add code to handle the + case where there is no sort column, but a default sort function. + (gtk_tree_model_sort_insert_value): Add code to handle the case + where there is no sort column an no default sort function. + (gtk_tree_model_sort_set_model): Use symbolic constant. + (gtk_tree_model_sort_reset_default_sort_func): Use symbolic constant. + 2002-02-11 Sven Neumann <sven@gimp.org> * gtk/gtkfilesel.c: converted the "Delete File" dialog to diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 66e5894fb1..7bd7e1a2ec 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,16 @@ +2002-02-11 Darin Adler <darin@bentspoon.com> + + * gtk/gtktreemodelsort.c: (gtk_tree_model_sort_row_changed): + Consider reordering the row even when there's no sort column, if + there's a default sort function. + (gtk_tree_model_sort_rows_reordered): Use symbolic constants. + (gtk_tree_model_sort_level_find_insert): Add code to handle the + case where there is no sort column, but a default sort function. + (gtk_tree_model_sort_insert_value): Add code to handle the case + where there is no sort column an no default sort function. + (gtk_tree_model_sort_set_model): Use symbolic constant. + (gtk_tree_model_sort_reset_default_sort_func): Use symbolic constant. + 2002-02-11 Sven Neumann <sven@gimp.org> * gtk/gtkfilesel.c: converted the "Delete File" dialog to diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 66e5894fb1..7bd7e1a2ec 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,16 @@ +2002-02-11 Darin Adler <darin@bentspoon.com> + + * gtk/gtktreemodelsort.c: (gtk_tree_model_sort_row_changed): + Consider reordering the row even when there's no sort column, if + there's a default sort function. + (gtk_tree_model_sort_rows_reordered): Use symbolic constants. + (gtk_tree_model_sort_level_find_insert): Add code to handle the + case where there is no sort column, but a default sort function. + (gtk_tree_model_sort_insert_value): Add code to handle the case + where there is no sort column an no default sort function. + (gtk_tree_model_sort_set_model): Use symbolic constant. + (gtk_tree_model_sort_reset_default_sort_func): Use symbolic constant. + 2002-02-11 Sven Neumann <sven@gimp.org> * gtk/gtkfilesel.c: converted the "Delete File" dialog to diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 66e5894fb1..7bd7e1a2ec 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,16 @@ +2002-02-11 Darin Adler <darin@bentspoon.com> + + * gtk/gtktreemodelsort.c: (gtk_tree_model_sort_row_changed): + Consider reordering the row even when there's no sort column, if + there's a default sort function. + (gtk_tree_model_sort_rows_reordered): Use symbolic constants. + (gtk_tree_model_sort_level_find_insert): Add code to handle the + case where there is no sort column, but a default sort function. + (gtk_tree_model_sort_insert_value): Add code to handle the case + where there is no sort column an no default sort function. + (gtk_tree_model_sort_set_model): Use symbolic constant. + (gtk_tree_model_sort_reset_default_sort_func): Use symbolic constant. + 2002-02-11 Sven Neumann <sven@gimp.org> * gtk/gtkfilesel.c: converted the "Delete File" dialog to diff --git a/gtk/gtktreemodelsort.c b/gtk/gtktreemodelsort.c index 9808214ab1..cc84fb5636 100644 --- a/gtk/gtktreemodelsort.c +++ b/gtk/gtktreemodelsort.c @@ -99,6 +99,8 @@ enum { #define GET_CHILD_ITER(tree_model_sort,child_iter,sort_iter) gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT (tree_model_sort), child_iter, sort_iter); +#define NO_SORT_FUNC ((GtkTreeIterCompareFunc) 0x1) + /* general (object/interface init, etc) */ static void gtk_tree_model_sort_init (GtkTreeModelSort *tree_model_sort); static void gtk_tree_model_sort_class_init (GtkTreeModelSortClass *tree_model_sort_class); @@ -456,7 +458,9 @@ gtk_tree_model_sort_row_changed (GtkTreeModel *s_model, level = iter.user_data; elt = iter.user_data2; - if (level->array->len < 2 || tree_model_sort->sort_column_id == -1) + if (level->array->len < 2 || + (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID && + tree_model_sort->default_sort_func == NO_SORT_FUNC)) { if (free_s_path) gtk_tree_path_free (start_s_path); @@ -788,8 +792,8 @@ gtk_tree_model_sort_rows_reordered (GtkTreeModel *s_model, 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) + if (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID && + tree_model_sort->default_sort_func == NO_SORT_FUNC) { gtk_tree_model_sort_sort_level (tree_model_sort, level, @@ -1459,19 +1463,14 @@ gtk_tree_model_sort_sort_level (GtkTreeModelSort *tree_model_sort, data.sort_data = tree_model_sort->default_sort_data; } - if (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID && - tree_model_sort->default_sort_func == (GtkTreeIterCompareFunc) 0x1) - { - g_array_sort_with_data (sort_array, - gtk_tree_model_sort_offset_compare_func, - &data); - } + if (data.sort_func == NO_SORT_FUNC) + g_array_sort_with_data (sort_array, + gtk_tree_model_sort_offset_compare_func, + &data); else - { - g_array_sort_with_data (sort_array, - gtk_tree_model_sort_compare_func, - &data); - } + g_array_sort_with_data (sort_array, + gtk_tree_model_sort_compare_func, + &data); gtk_tree_path_free (data.parent_path); @@ -1580,21 +1579,28 @@ gtk_tree_model_sort_level_find_insert (GtkTreeModelSort *tree_model_sort, GtkTreePath *path; - { - GtkTreeDataSortHeader *header; - - header = _gtk_tree_data_list_get_header (tree_model_sort->sort_list, - tree_model_sort->sort_column_id); - - if (!header) - return 0; - - g_return_val_if_fail (header->func != NULL, 0); - - func = header->func; - data = header->data; - } + if (tree_model_sort->sort_column_id != GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) + { + GtkTreeDataSortHeader *header; + + header = _gtk_tree_data_list_get_header (tree_model_sort->sort_list, + tree_model_sort->sort_column_id); + + g_return_val_if_fail (header != NULL, 0); + + func = header->func; + data = header->data; + } + else + { + func = tree_model_sort->default_sort_func; + data = tree_model_sort->default_sort_data; + + g_return_val_if_fail (func != NO_SORT_FUNC, 0); + } + g_return_val_if_fail (func != NULL, 0); + for (middle = 0; middle < level->array->len; middle++) { tmp_elt = &(g_array_index (level->array, SortElt, middle)); @@ -1641,9 +1647,13 @@ gtk_tree_model_sort_insert_value (GtkTreeModelSort *tree_model_sort, elt.ref_count = 0; elt.children = NULL; - index = gtk_tree_model_sort_level_find_insert (tree_model_sort, - level, s_iter, - FALSE); + if (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID && + tree_model_sort->default_sort_func == NO_SORT_FUNC) + index = offset; + else + index = gtk_tree_model_sort_level_find_insert (tree_model_sort, + level, s_iter, + FALSE); g_array_insert_vals (level->array, index, &elt, 1); @@ -1764,7 +1774,7 @@ gtk_tree_model_sort_set_model (GtkTreeModelSort *tree_model_sort, tree_model_sort->sort_list = _gtk_tree_data_list_header_new (n_columns, types); g_free (types); - tree_model_sort->default_sort_func = (GtkTreeIterCompareFunc)0x1; + tree_model_sort->default_sort_func = NO_SORT_FUNC; tree_model_sort->stamp = g_random_int (); } } @@ -2117,13 +2127,9 @@ gtk_tree_model_sort_free_level (GtkTreeModelSort *tree_model_sort, } if (sort_level->parent_elt) - { - sort_level->parent_elt->children = NULL; - } + sort_level->parent_elt->children = NULL; else - { - tree_model_sort->root = NULL; - } + tree_model_sort->root = NULL; g_array_free (sort_level->array, TRUE); sort_level->array = NULL; @@ -2155,10 +2161,7 @@ gtk_tree_model_sort_clear_cache_helper (GtkTreeModelSort *tree_model_sort, } if (level->ref_count == 0 && level != tree_model_sort->root) - { - gtk_tree_model_sort_free_level (tree_model_sort, level); - return; - } + gtk_tree_model_sort_free_level (tree_model_sort, level); } /** @@ -2176,7 +2179,7 @@ gtk_tree_model_sort_reset_default_sort_func (GtkTreeModelSort *tree_model_sort) if (tree_model_sort->default_sort_destroy) (* tree_model_sort->default_sort_destroy) (tree_model_sort->default_sort_data); - tree_model_sort->default_sort_func = (GtkTreeIterCompareFunc) 0x1; + tree_model_sort->default_sort_func = NO_SORT_FUNC; tree_model_sort->default_sort_data = NULL; tree_model_sort->default_sort_destroy = NULL; tree_model_sort->sort_column_id = GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID; |