GTK4 builder <closure> wants zero-terminated arrays with no length argument
Or at least so it seems from my experimentation.
<object class="GtkLabel">
<binding name="css-classes">
<closure type="GStrv" function="classes_vert_speed">
<lookup name="item">GtkListItem</lookup>
</closure>
</binding>
</object>
Works fine with:
[GtkCallback]
[CCode (array_length = false, array_null_terminated = true)]
private string[]? classes_vert_speed (CommandFrame? frame) {
if (frame == null)
return null;
var state = frame.pre_player_move;
if (state == null)
return null;
var vel = state.velocity;
if (vel[2] > 0)
return { "vert-speed-positive" };
else
return { "vert-speed-negative" };
}
and crashed without the CCode
annotation.