Motivation
- Scalability: The current solution of adding little icon buttons next to the data-block name field doesn't scale well. It only works if there's a small number of operations. We need to be able to place more items for better data-block management. Especially with the introduction of library overrides.
- Discoverability: It's not obvious what some of the icons do. They appear and disappear, but it's not clear why some are available at times and others not.
- Unclear Status: Currently their library status (linked, indirectly linked, broken link, library override) isn't really clear.
- Unusual behavior: Some of the icon buttons allow Shift or Ctrl clicking to invoke alternative behaviors. This is not a usual pattern in Blender.
Proposal
Operations Menu
Proposal is to add a menu to the right of the name button, containing all available operations.
We can place much more items there, better expose alternative behaviors of operators and actually show the name of operators to help discoverability.
Status indicators
User count and fake user status could be indicated inside the name button.
The icons on the right could remain click able to unlink the data-block and enable fake user for it.
On the left we could also indicate the library status (linked, indirectly linked, broken link, library override) with the already existing icons for that.
Open Questions
- Which items can be moved to the menu, which should remain accessible without having to open the menu? Having to open a menu to press "New" is slower than what we had before.
- Hide unavailable items, or gray them out? It's usually a good idea to not hide menu items to not confuse users. Graying them out is preferable (with a hint in the tooltip as to why it's disabled!), but that may result in long menus with most items grayed out. E.g. it seems odd to have operators to manage Library Overrides visible for un-overriden, or even local data-blocks.
- Which operators exactly to show in the menu? There are multiple data-block operations with similar behavior. E.g. Add vs. Duplicate vs. Make Single-User Copy. Or Deleting vs. forcing single user (so the data-block isn't written to files).