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:
- In an action or rule, using the last syntax example above, i.e. setting the attribute to '=;'.
- Use the Quickstamp dialog. Select the note(s) and simply click the 'use default:…' button at the bottom and close the dialog - you don't need to click 'apply' as well.
- Use Info view (Cmd+Opt+i). Select the attribute value (right column) and then click the middle button ('Use default…') at the bottom of the view's window.
- Some secondary and pop-up menus listing value choices have 'normal' option which resets the inherited value.
Method 1 - Use the Inspector
To change a single attribute for all selected note(s):
- Open the Inspector
- Choose the Attribute Group containing the attribute
- Choose the attribute from the right-pop-up
- Click the 'use default:…' button
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:
- Open its Info view (Cmd+Opt+i)
- Choose the Attribute Group containing the attribute from the pop-up in the top section
- Choose the attribute in the bottom section, clicking on the attribute value in the right column.
- Click the 'Use Defa…' button in the middle of the view status bar (at bottom)
- The value will change and the left/right column will change from black text (local value set) to grey (value inherited)
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.