On Mon, 2003-10-20 at 08:49, Boszormenyi Zoltan wrote:
> Hi,
> 
> is it possible to append a row to a TreeModel while having
> an iterator going through the same model?

Probably a hack but... if you append the row to a treepath greater than
that of the iterator, no problem. But if you append it to a path less
than that represented by the iterator, the iterator will be knocked off
track. That's just what I've observed.

Edscott

> 
> I have a code snippet that does just the same,
> the second time the code runs
> the second gtk_tree_model_get_iter_first() seems to succeed
> but gives an invalid iterator, as I get invalid values.
> 
> I use an uptodate fedora core, gtk2-2.2.4-5.1.
> 
> This is the code:
> 
> void utolso_sztorno(void) {
>       GtkTreeIter     iter, iter1;
>       int             sorsz, sorsz1, lancfej, lancresz, gyujto, afa,
>                       prev, next;
>       gchar           *tranz, *vk, *nev, *afajel, *egys;
>       double          szorzo, ar, osszeg;
> 
>       if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(ptgdb_internal->tetelek), 
> &iter)) {
>               do {
>                       gtk_tree_model_get (GTK_TREE_MODEL(ptgdb_internal->tetelek), 
> &iter,
>                               TETEL_SORSZ, &sorsz, TETEL_PREV, &lancresz, -1);
>                       if (!lancresz)
>                               lancfej = sorsz;
>               } while (gtk_tree_model_iter_next 
> (GTK_TREE_MODEL(ptgdb_internal->tetelek), &iter));
> #if 0 /* makes no difference */
>               memset(&iter, 0, sizeof(iter));
> #endif
>               if 
> (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(ptgdb_internal->tetelek), &iter))
>               do {
>                       gtk_tree_model_get (GTK_TREE_MODEL(ptgdb_internal->tetelek), 
> &iter,
>                               TETEL_SORSZ, &sorsz1, TETEL_TRANZAK, &tranz,
>                               TETEL_VKOD, &vk, TETEL_NEV, &nev,
>                               TETEL_GYUJTO, &gyujto, TETEL_AFA, &afa,
>                               TETEL_AFAJEL, &afajel, TETEL_SZORZO, &szorzo,
>                               TETEL_EGYSEG, &egys, TETEL_AR, &ar,
>                               TETEL_OSSZEG, &osszeg, TETEL_PREV, &prev,
>                               TETEL_NEXT, &next, -1);
> /* here I get invalid numbers on the second run, seems to be un-initialized */
> printf("sorsz: %d\n", sorsz1);
>                       if (sorsz1 > sorsz)
>                               break;
>                       if ((sorsz1 >= lancfej) && (sorsz1 <= sorsz)) {
>                               gtk_list_store_set (ptgdb_internal->tetelek,
>                                       &iter1, TETEL_SZTORNO, TRUE,
>                                       osszeg, -1);
>                               gtk_list_store_append (ptgdb_internal->tetelek, 
> &iter1);
>                               gtk_list_store_set(ptgdb_internal->tetelek, &iter1,
>                                       TETEL_SORSZ, sorsz1 + sorsz - lancfej + 1,
>                                       TETEL_TRANZAK, tranz,
>                                       TETEL_VKOD, vk, TETEL_NEV, nev,
>                                       TETEL_SZTORNO, TRUE, TETEL_IGAZITAS, 1.0,
>                                       TETEL_GYUJTO, gyujto,
>                                       TETEL_AFA, afa, TETEL_AFAJEL, afajel,
>                                       TETEL_SZORZO, -szorzo,
>                                       TETEL_EGYSEG, egys,
>                                       TETEL_AR, ar, TETEL_OSSZEG, -osszeg,
>                                       TETEL_PREV, prev, TETEL_NEXT, next,
>                                       -1);
>                       }
>               } while (gtk_tree_model_iter_next 
> (GTK_TREE_MODEL(ptgdb_internal->tetelek), &iter1));
>       } else
>               gdk_beep();
> }
> 

_______________________________________________
gtk-list mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to