This version is out of date, covering development from v5.0.0 to v5.12.2. It is maintained here only for inbound reference links from elsewhere.

Jump to the current version of aTbRef.

Tinderbox Icon

Setting an attribute to re-enable inheritance

Once an attribute has been explicitly set (i.e. not via inheritance) 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 the user-set value to be unintentionally over-written.

This can catch out the new user 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 explicitly 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' would inheritance re-occur? No. That is because whilst the inherited colour is 'green', an explicitly set value is still seen as 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.

How is inheritance re-enabled?

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). There are several approaches that can be used and which may appeal to different users' styles of work. Bearing mind that if re-setting a text window UI-related attribute like $KeyAttributes, it may be necessary to close/re-open any text window(s) in order to see the effect of the changes you make.

The resetting process can be done in a number of ways:

Method 1 - Use the Inspector

To change a single attribute for all selected note(s):

To change a multiple attributes, repeat the above process for each attribute in turn.

Method 2 - Use Info view

To change a single attribute for a single note:

To change a multiple attributes, repeat the above process for each attribute in turn.

Method 3 - Use Code (in an attribute or stamp)

Code can be run as a $Rule or $AgentAction or within a stamp.

To set any data-type of attribute to its inherited value:

$MyAttribute=; 

Note that no quotes are used around the semicolon. The above is not the same as simply setting a string to empty or a number to zero. Why? Because the latter is simply setting that value locally and thus still blocking inheritance.

Method 4 - Use menu 'normal' options

A number of menus and pop-up /context menu have a 'normal' item at the top of the listing. For example his can be seen with menus for setting $Color or $Badge. In any of these, clicking the 'normal' option will reset the local attribute to re-inherit values.


Possible relevant notes (via "Similar Notes" feature):


A Tinderbox Reference File : Attributes : Setting an attribute to re-enable inheritance