Avoid overeager warning about deprecated properties

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
This commit is contained in:
Matthias Clasen 2014-05-12 23:05:41 -04:00
parent 4dba2eb486
commit 4360756c69

View File

@ -1348,9 +1348,16 @@ object_set_property (GObject *object,
if (enable_diagnostic[0] == '1') if (enable_diagnostic[0] == '1')
{ {
if (pspec->flags & G_PARAM_DEPRECATED) 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.", /* don't warn for automatically provided construct properties */
G_OBJECT_TYPE_NAME (object), pspec->name); 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 */ /* provide a copy to work from, convert (if necessary) and validate */