Setting an attribute to re-enable inheritance

Tinderbox Icon

Once an attribute has been explicitly set (except via inheritance), i.e. to a non-default value, Tinderbox inheritance no longer occurs. This is deliberate, the rationale being that the user wants that note's attribute to retain the value; maintaining inheritance might cause to to be unintentionally over-written.

Where this catches out the new user is when prototypes are in use. One of the strengths of prototypes is that a change to the prototype is instantly imposed on all notes using that prototype - except where a note's attribute has been explicitly changed.

A very simplistic example might be where a prototype sets note Color, e.g. 'blue'. If the user sets a note using the prototype to Color 'green', if the prototype's Color is then changed to 'red' all the other note's using the prototype will go red - but not the one changed to green. Many new users would expect them all to go red.

So, fine if the user wanted to take an attribute out of the inheritance stream - but what if it was a mistake. In the above scenario, if the user reset the changed note's Color back to 'blue' who inheritance re-occur? NO! That's because whilst the inherited colour is 'green', an explictly set value is still an explicitly set (i.e. non-inherited) value even if the same as the notional inherited value.

An easy way to confirm if an attribute is inherited or not is to open its Info view (Cmd+Opt+i). Attribute names are listed on the left column (for the attribute type/section being displayed). Attributes being inherited are listed in grey text, explicitly set (and thus non-inheriting) attributes are listed in black text.

So, how to re-enable inheritance?

The trick is to set the attribute value to no value - something you can't do by typing into a value input box (e.g. as in displayed Key Attributes). For a string attribute setting no text is doing this in code:

MyAttribute="";

...whereas we need to use this special syntax (regardless of attribute data type):

MyAttribute=;

The resetting process can be done in two ways:

Doing either of these will result in that attribute for that note having its inheritance restored.


Up: Attributes
Previous: Setting an attribute to (no value)   

[Last updated: 1 Dec 2008]

Google search aTbRef for:  

Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 License
[See aTbRef CC licence Attribution/Waiver info info]

Creative Commons License

Made with Tinderbox