On Apr 30, 2008, at 10:19 PM, Daniel Kasak wrote:

> Hi all.
>
> I'm cleaning up warnings in various places, and one that I can't  
> figure
> out happens when switching a combo's model. When I build a model that
> has no data ( ie when I base the model on stuff from a database, and
> there's no data returned ), I get:
>
> Gtk-CRITICAL **: gtk_combo_box_entry_set_text_column: assertion
> `entry_box->priv->text_column == -1'
>
> ... when I do:
>
> my $model = Gtk2::ListStore->new( 'Glib::Int', 'Glib::String' );
> $combo->set_model( $model ); # <== error happens at this point
> $combo->set_text_column( 1 ); #  ... not at this point
>
> ... and then repeat the above. That is, it *doesn't* happen the first
> time, but happens all subsequent times.


Looking at the code, and seeing the message, i find it very hard to  
believe the warning does not come from the set_text_column() line.   
The only g_return_if_fail() in gtk+ with that test is in that  
function, and the message is constructed with __func__.

Now, what is clear from the source, but not from the docs, is that you  
can call gtk_combo_box_entry_set_text_column() exactly once on a given  
ComboBoxEntry instance.  The first assertion is that text_column >= 0  
and < model's n columns. Then it asserts that the current value is -1,  
meaning you haven't set it before.

So, i suggest that you only call set_text_column() when creating the  
ComboBoxEntry, and not each time you set the model.  The program  
attached to your message does not call set_text_column() each time.

Another suggestion: try

   my $combo = Gtk2::ComboBoxEntry->new ($model, $text_column);

instead of the three-line version.


--
One, two, free, four, five, six, sebben, eight, nine, ten, elebben,  
twull, fourteen, sickteen, sebbenteen, eightteen, elebbenteen,  
fiffeen, elebbenteen!
   -- Zella, aged three, counting to twenty.


_______________________________________________
gtk-perl-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-perl-list

Reply via email to