gobject: loosen property override flag restrictions
authorRyan Lortie <desrt@desrt.ca>
Tue, 20 Dec 2011 19:36:29 +0000 (14:36 -0500)
committerRyan Lortie <desrt@desrt.ca>
Tue, 20 Dec 2011 19:58:38 +0000 (14:58 -0500)
commitaf24dbc12aa77aac3c82d39872878558cced7add
tree6923f1fb67258bfb4a902906cf4f750cc198a466
parent68706bfa2b91d4eb33cddfca2b640fcc3ce80637
gobject: loosen property override flag restrictions

GObject enforces the following restrictions on property overrides:

  - must only add abilities: if the parent class supports
    readability/writability then the subclass must also support them.
    Subclasses are free to add readability/writability.

  - must not add additional restrictions: if the parent class doesn't
    have construct/construct-only restrictions then the subclass must
    not add them.  Subclasses are free to remove restrictions.

The problem with the previous implementation is that the check against
adding construct/construct-only restrictions was being done even if the
property was not previously writable.  As an example:

  "readable" and "writable only on construct"

was considered as being more restrictive than

  "read only".

This patch tweaks the check to allow the addition of
construct/construct-only restrictions for properties that were
previously read-only and are now being made writable.

https://bugzilla.gnome.org/show_bug.cgi?id=666615
gobject/gobject.c