X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fdict-display.c;h=f8919de58f39c9b12e251885b6b33cdee66ed243;hb=f64e4aa7e0d79679631bab72721d55a304ba5a82;hp=cb46ad5716eaf7bd2d6c2a90f243ba799332e2ef;hpb=c473f9ca75fc61a68e9e7e3bd7cb5f36dd0f7cf5;p=pspp diff --git a/src/ui/gui/dict-display.c b/src/ui/gui/dict-display.c index cb46ad5716..f8919de58f 100644 --- a/src/ui/gui/dict-display.c +++ b/src/ui/gui/dict-display.c @@ -36,26 +36,45 @@ #define _(msgid) gettext (msgid) #define N_(msgid) msgid -static void + +void get_base_model (GtkTreeModel *top_model, GtkTreeIter *top_iter, - GtkTreeModel **model, GtkTreeIter *iter - ) + GtkTreeModel **model, GtkTreeIter *iter) { *model = top_model; - *iter = *top_iter; - while (GTK_IS_TREE_MODEL_FILTER (*model)) - { - GtkTreeIter parent_iter = *iter; - GtkTreeModelFilter *parent_model = GTK_TREE_MODEL_FILTER (*model); - *model = gtk_tree_model_filter_get_model (parent_model); + if (iter) + *iter = *top_iter; - gtk_tree_model_filter_convert_iter_to_child_iter (parent_model, - iter, - &parent_iter); + while (! PSPPIRE_IS_DICT (*model)) + { + GtkTreeIter parent_iter; + if (iter) + parent_iter = *iter; + + if (GTK_IS_TREE_MODEL_FILTER (*model)) + { + GtkTreeModelFilter *parent_model = GTK_TREE_MODEL_FILTER (*model); + + *model = gtk_tree_model_filter_get_model (parent_model); + + if (iter) + gtk_tree_model_filter_convert_iter_to_child_iter (parent_model, + iter, + &parent_iter); + } + else if (GTK_IS_TREE_MODEL_SORT (*model)) + { + GtkTreeModelSort *parent_model = GTK_TREE_MODEL_SORT (*model); + + *model = gtk_tree_model_sort_get_model (parent_model); + + if (iter) + gtk_tree_model_sort_convert_iter_to_child_iter (parent_model, + iter, + &parent_iter); + } } - - g_assert (PSPPIRE_IS_DICT (*model)); } @@ -64,7 +83,7 @@ insert_source_row_into_entry (GtkTreeIter iter, GtkWidget *dest, GtkTreeModel *model, gpointer data - ) + ) { GtkTreePath *path; GtkTreeModel *dict; @@ -178,7 +197,7 @@ is_currently_in_entry (GtkTreeModel *model, GtkTreeIter *iter, gtk_tree_path_free (path); - result = ( 0 == strcmp (text, var_get_name (var) )); + result = (0 == strcmp (text, var_get_name (var))); return result; }