This tasks proposes that dynamic menu should not be used (with some exceptions, below).
Examples of dynamic menu text include terms generated by blend-file data and text that changes based on the current selection.
This causes the following problems:
- Visual Noise
To take this to some logical extreme, imagine we could do this everywhere:- Delete "Cube"
- Parent to "Sphere.001"
- Save "my_filename.blend"
- Revert "my_filename.blend"
... etc.
This adds more information in the interface in a way that's not very helpful.
When using an interface users learn to quickly identify unique terms. Having the text changed based on data-block names means you have the hint that something is changing when you visually scan the menu, when the changes are only based on the selection.
Aside from the distraction of changing text, some names are already quite long, adding data / operator names as part of other actions means we will end up with awkwardly cramped text in some cases.
- Unpredictable Menu Search
If data-block names are included in menu item labels, search will give less predictable results as the names of data in the scene will be included in the search too.
So if you know searching for a short combination of letters can activate a tool, this change means there would be a chance that typing in this sequence will perform a different action based on the current selection.
- Complicates Documentation
If you have to clearly describe steps which include dynamic names, it means you need to
Edit -> Rename "{active object or bone name}"
- Complicates Translations
We need to take care to handle translations properly, currently this patch doesn't account for this (translating the operator names but not the data-names).
- Complicates Menu Memory
Currently popup menus remember the last action based on the text, with dynamic changing text, our menu hashing function ui_popup_menu_memory would need to somehow support this too, at least if this is used for menu items in popup menus.
Exceptions
- Menus where their only purpose is to list data-blocks, the "Add -> Collection Instance" menu for example.
- Undo / Redo may include the name of the action they're operating on.