2 May 2011 07:13
Re: [Vala] Struct property bug: get, but not set
Excerpts from Nor Jaidi Tuah's message of 2011-05-01 23:32:19 -0400:
> The following displays 0 for button.color.red.
> Expected: 100.
>
> void main (string[] args) {
> Gtk.init (ref args);
> var button = new Gtk.ColorButton ();
> button.color.red = 100; /*1*/
> debug ("%d", button.color.red);
> }
>
> Line /*1*/ is compiled to:
> gtk_color_button_get_color (button, &_tmp1_);
> _tmp1_.red = (guint16) 100;
>
> There is no set access to button.color at all!
>
> Is this a known bug?
>
> hand
> Nor Jaidi Tuah
>
Not a bug.
Explanation:
http://bugzilla.gnome.org/show_bug.cgi?id=621787
I think you're going to have to create a new Color:
using Gtk;
void main(string[] args) {
Gtk.init(ref args);
var color = Color() { pixel=0, red=100, green=0, blue=0 };
var button = new Gtk.ColorButton.with_color(color);
debug( <at> "$(button.color.red)");
}
I think this is because structs are passed by value,
and not by reference, so it creates a temporary struct
(a shallow copy) when using the getter, then you are setting
the red of that temporary struct, not actually changing
the button's color struct.
--
--
Jonathan Ryan
RSS Feed