make GParamGType require the set type during construction instead of using
authorBenjamin Otte <otte@src.gnome.org>
Wed, 6 Feb 2008 09:36:47 +0000 (09:36 +0000)
committerBenjamin Otte <otte@src.gnome.org>
Wed, 6 Feb 2008 09:36:47 +0000 (09:36 +0000)
* gparamspecs.c: (param_gtype_set_default), (param_gtype_validate):
make GParamGType require the set type during construction instead of
using G_TYPE_NONE, which causes issues when setting.
Bug 513073 - g_param_spec_gtype breaks with G_PARAM_CONSTRUCT

svn path=/trunk/; revision=6457

gobject/ChangeLog
gobject/gparamspecs.c

index 983d634..f5a391d 100644 (file)
@@ -1,3 +1,10 @@
+2008-02-06  Benjamin Otte  <otte@gnome.org>
+
+       * gparamspecs.c: (param_gtype_set_default), (param_gtype_validate):
+       make GParamGType require the set type during construction instead of
+       using G_TYPE_NONE, which causes issues when setting.
+       Bug 513073 - g_param_spec_gtype breaks with G_PARAM_CONSTRUCT
+
 2008-02-05 18:52:07  Tim Janik  <timj@imendio.com>
 
        * gtype.c: added recursive mutex to protect class initialization,
index 30c744b..5cbe605 100644 (file)
@@ -1042,7 +1042,9 @@ static void
 param_gtype_set_default (GParamSpec *pspec,
                         GValue     *value)
 {
-  value->data[0].v_long = G_TYPE_NONE;
+  GParamSpecGType *tspec = G_PARAM_SPEC_GTYPE (pspec);
+
+  value->data[0].v_long = tspec->is_a_type;
 }
 
 static gboolean
@@ -1055,7 +1057,7 @@ param_gtype_validate (GParamSpec *pspec,
   
   if (tspec->is_a_type != G_TYPE_NONE && !g_type_is_a (gtype, tspec->is_a_type))
     {
-      value->data[0].v_long = G_TYPE_NONE;
+      value->data[0].v_long = tspec->is_a_type;
       changed++;
     }