Web lists-archives.com

GObject property validation during object construction

I have a GObject.

struct _MyObject
  gchar *foo;

I set a string property in my class_init with g_param_spec_string. I
set the property->cset_nth to a string of valid characters

static void
my_object_class_init (MyObjectClass *klass)
  GParamSpecString *pspec = g_param_spec_string ("foo", "foo", "foo",
                                                 G_PARAM_READWRITE | 
  pspec->cset_nth = g_strdup ("abcdefghijklmnopqrstuvwxyz-_");

  g_object_class_install_property (object_class, PROP_FOO, pspec);

When I create an instance of my object with g_object_new:

MyObject *obj = g_object_new (MY_TYPE_OBJECT,
                              "foo", "invalid string",

I notice that g_param_value_validate *is* being called, and does return
FALSE, but it's not setting an error; it appears to g_logs a warning
and eventually aborts. Is there any way to make that validation check
non-fatal, so I can handle the error nicely?

Also, this behavior seems contradictory to the GObject documentation on
properties: "the GValue is validated by g_param_value_validate [...] As
such, the g_object_set_property function will return with an error."
g_object_set_property returns void and does not accept a GError.

Attachment: signature.asc
Description: This is a digitally signed message part

gtk-list mailing list