Avoid overeager warning about deprecated properties
authorMatthias Clasen <mclasen@redhat.com>
Tue, 13 May 2014 03:05:41 +0000 (23:05 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 13 May 2014 12:08:38 +0000 (08:08 -0400)
Construct properties are always set during construction.
It makes no sense to warn about this even if the property
is marked as deprecated; the deprecation warning should
only be issues for explicit uses of the property after
construction.

https://bugzilla.gnome.org/show_bug.cgi?id=730045

gobject/gobject.c

index e12eb6b..78fe203 100644 (file)
@@ -1348,9 +1348,16 @@ object_set_property (GObject             *object,
   if (enable_diagnostic[0] == '1')
     {
       if (pspec->flags & G_PARAM_DEPRECATED)
-        g_warning ("The property %s:%s is deprecated and shouldn't be used "
-                   "anymore. It will be removed in a future version.",
-                   G_OBJECT_TYPE_NAME (object), pspec->name);
+        {
+          /* don't warn for automatically provided construct properties */
+          if (!(pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY)) ||
+              !object_in_construction (object))
+            {
+              g_warning ("The property %s:%s is deprecated and shouldn't be used "
+                         "anymore. It will be removed in a future version.",
+                         G_OBJECT_TYPE_NAME (object), pspec->name);
+            }
+        }
     }
 
   /* provide a copy to work from, convert (if necessary) and validate */