W dniu 12 marca 2012 17:58 użytkownik Krzesimir Nowak <[email protected]>napisał:

> W dniu 12 marca 2012 16:55 użytkownik Krzesimir Nowak
> <[email protected]> napisał:
> > W dniu 12 marca 2012 16:14 użytkownik Łukasz Gąsiorek
> > <[email protected]> napisał:
> >> Hi!
> >> Code is here http://pastie.org/3578062
> >> Look at the lines 80, 81, 82 and 93.
> >> When I swap lines 81 and 82 app works. What is wrong?
> >
> > I do wonder if declaring m_cols as 'const Columns' in ContactList is
> > not messing some things up. I mean - it probably should be non-const,
> > because referring to members of const instance makes the members also
> > const, that is - they are of type e.g. 'const
> > Gtk::TreeModelColumn<Glib::ustring>' instead of
> > 'Gtk::TreeModelColumn<Glib::ustring>'. And this probably doing
> > something weird in line with 'row[m_cols.contact] = contact;' where
> > operator[] of row is some kind of templated function.
> >
> > This is a wild guess I made after reading the code - I did not try to
> > compile it. I suppose that compiling with warning flags (like -Wall
> > and -Wextra) gives no clues, eh?
> >
>
> Ok, do not read this obviously morose speculations above.
>
> The reason the code works in that way is because everytime you set a
> column, the model is sorted. So first invocation of add_contact
> succeeds, because there is nothing to be sorted. Then second call
> comes and you are setting alias first - that causes some signals to be
> emitted and in effect the model is sorted (sort function is already
> set). And that aborts, because the contact column in second row is not
> being set, so it holds an empty shared pointer.
>
> In short - the assertion here is wrong. Empty shared_ptr should be
> handled gracefully. When the contact column is set then it will be
> sorted again, this time correctly.
>
> Also, I would move 'm_tree_store->set_sort_column(m_cols.alias,
> Gtk::SORT_ASCENDING);' into ContactList constructor - you do not need
> to call it everytime.
>
>
Thank you so much!
Now everything works well. :)
_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to