Re: gtktree: combination filter and using gtk_tree_model_foreach

2017-05-24 Thread Eric Cashon via gtk-app-devel-list

 
Hi Rob,

The trick here is to use gtk_tree_model_filter_convert_iter_to_child_iter(). 
That will get the iter that you need. It will work the same on both GTK2 and 
GTK3. You have to be a little careful with gtk_tree_model_foreach(). It is easy 
to add nodes and then the function will check everyone of the additional nodes. 

Eric

gboolean func(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, 
gpointer data) 
{ 
  //Test counter for nodes.
  static gint i=0;
  GtkTreeIter parent;
  GtkTreeIter child_iter;
  GtkTreeIter node;
  
  if(!gtk_tree_model_iter_parent(model, , iter))
{
  if(!gtk_tree_model_iter_has_child(model, iter))
{
  g_print("Child %i\n", i);
  
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), 
_iter, iter); 
  gtk_tree_store_append(store, , _iter);
  gtk_tree_store_set(store, , 0, "child", -1);
}
}
  i++;
   
  return FALSE; 
} 

 

 

-Original Message-
From: Rob Alblas 
To: gtk-app-devel-list 
Sent: Wed, May 24, 2017 5:57 am
Subject: gtktree: combination filter and using gtk_tree_model_foreach

In a GtkTree I want to use a filter, and also extend the tree using 
gtk_tree_model_foreach. The combination of the 2 gives problems. 
In the function connected to gtk_tree_model_foreach I use the GtkTreeIter *iter 
argument, which gives an error message: 

Gtk-CRITICAL **: IA__gtk_tree_store_append: assertion `VALID_ITER (parent, 
tree_store)' failed 

I define tree, filter etc. as follows: 
stree = gtk_tree_store_new(1,G_TYPE_STRING); 
ftree = GTK_TREE_MODEL_FILTER(gtk_tree_model_filter_new(GTK_TREE_MODEL(stree), 
NULL)); 
tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ftree)); 
model=gtk_tree_view_get_model(GTK_TREE_VIEW(tree)); 

... 
(build a part of the tree) 
... 
gtk_tree_model_foreach(model,func,NULL); 

In func: 
gboolean func(GtkTreeModel *model,GtkTreePath *path,GtkTreeIter *iter,gpointer 
data) 
{ 
gtk_tree_model_get(model,iter, 0, , -1); 
... 
gtk_tree_store_append(stree, , iter); 
... 
} 

gtk_tree_store_append gives the mentioned error. 

If I remove the filter, and define instead: 
tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(stree)); 

then building using gtk_tree_model_foreach works fine. 
How to solve this? 

Attached an example showing the problem. 
(Note: I am using gtk2.0, don't know if the same problem is with gtk3.) 

___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


gtktree: combination filter and using gtk_tree_model_foreach

2017-05-24 Thread Rob Alblas
In a GtkTree I want to use a filter, and also extend the tree using 
gtk_tree_model_foreach. The combination of the 2 gives problems. 
In the function connected to gtk_tree_model_foreach I use the GtkTreeIter *iter 
argument, which gives an error message: 

Gtk-CRITICAL **: IA__gtk_tree_store_append: assertion `VALID_ITER (parent, 
tree_store)' failed 

I define tree, filter etc. as follows: 
stree = gtk_tree_store_new(1,G_TYPE_STRING); 
ftree = GTK_TREE_MODEL_FILTER(gtk_tree_model_filter_new(GTK_TREE_MODEL(stree), 
NULL)); 
tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ftree)); 
model=gtk_tree_view_get_model(GTK_TREE_VIEW(tree)); 

... 
(build a part of the tree) 
... 
gtk_tree_model_foreach(model,func,NULL); 

In func: 
gboolean func(GtkTreeModel *model,GtkTreePath *path,GtkTreeIter *iter,gpointer 
data) 
{ 
gtk_tree_model_get(model,iter, 0, , -1); 
... 
gtk_tree_store_append(stree, , iter); 
... 
} 

gtk_tree_store_append gives the mentioned error. 

If I remove the filter, and define instead: 
tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(stree)); 

then building using gtk_tree_model_foreach works fine. 
How to solve this? 

Attached an example showing the problem. 
(Note: I am using gtk2.0, don't know if the same problem is with gtk3.) 

___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list