Library Override - Outliner UI/UX #95802

Closed
opened 2022-02-15 16:08:26 +01:00 by Bastien Montagne · 21 comments

WIP


This task gathers the planned changes to the Outliner UI/UX regarding library overrides.

It is partially related to #95707 (Library Override - System override IDs).

There are three main identified tasks:

NOTE: A third Favorite view mode is also planed for the Outliner, see #95816 (Library Override - 'Cherry-Picked' Properties) for details.

Overrides Properties View Mode


The current Outliner's 'flat' view of overrides should be moved into its own 'mode', and extended to show UI widgets for each overridden RNA properties.

The focus of this view mode is the access to the actual (user-defined) overridden data of each ID.

In that mode, new SystemOverrides data-block would not be visible by default (filter option), just like existing 'system override' properties (for ID pointers) are already hidden by default. Using the same option for both should make sense.

Some common operations over overrides will be added in a contextual menu.

Mockup:
image.png

Tasks

  • Move current code/view into this new view mode.
  • Add the RNA widgets.
  • Context menu
  • List collection items and modification indicator (e.g. list modifiers and modified properties, and indicate which modifiers were added/removed). - d2a30abff0

Further tweaks:

  • Show UI name of properties (with full RNA path in tooltip?) - d2a30abff0
  • Group individual path segments? (E.g. instead of {nav Objects > Beam2 > animation_visualization.motion_path.show_frame_numbers} show {nav Objects > Beam2 > Animation Visualization > Motion Paths > Show Frame Numbers}) - d2a30abff0
  • Disable blue highlight property buttons (redundant since it just indicates overriden properties, which they all are) - D14416
  • Remove redundant override icons for individual properties.
  • Remove Overrides listing from ViewLayer view - D14411
  • Remove Current File base element and external libraries from the Properties view mode - D14410
  • Display icons for Objects, Materials, Images etc. base elements?
  • Handle RNA widgets for array properties with length > 3 better (matrices, quaternions, etc.)
  • Don't display empty base elements (e.g. "Collections" element if there are only system override collections) - a6214ce7ac
  • Don't stretch icon toggle-buttons over the entire column: image.png Use the standard icon button size.
  • Make button column resizable, with minimum width for first column

Overrides Hierarchies View Mode


That new view mode will focus on showing and helping manage the override hierarchies, i.e. the relationships between IDs.

As such, only 'root overrides' (and those who are not part of any hierarchy) will be shown at the first level (typically, collections).

System Overrides will be shown in that mode. An button icon on the right will allow to toggle them to actual 'user' overrides.

Some advanced management/fixing operations could also be added in a contextual menu, such as removing and override from a hierarchy, or moving it to another hierarchy. Those could be useful to fix broken cases.

Mockup:
image.png

Tasks

  • Add the new basic tree view. - D14440
  • Add the right column of system vs user overrides. - 994da7077d
  • Add/hook-up various hierarchy-related operations (set/change/clear root ID, set/clear system overrides, etc.).
  • Also add the hierarchies for indirect library overrides (library overrides within linked libraries/IDs). - D14440
  • Make warning display work for Hierarchies mode (in fact, generalize it to be supported anywhere). - f1df685f57, 6feca52349

Refine Allowed Operations, Integrate System Override IDs and Root IDs


This is mostly a lot of smaller tasks (new operators, refinement of poll/execution checks of existing ones, etc.). It should also include/take advantage of the new hierarchy root ID pointer, and system overrides concepts.

Tasks

  • Rename 'Override' to 'Override Single', and move it after the 'Override Hierarchy' option (make this one the most visible/obvious option). Better not break muscle memory, at least for now.
  • Revise existing ID operations (e.g. override collections should not be allowed to be single-deleted; Only root override collections should be allowed to be moved around; etc.).
  • Add operators to control root IDs and SystemOverrides (advanced, useful to debug and fix broken cases).
  • Revise how warnings (the triangle with ! to the left of the items) are handled, make it more generic. - f1df685f57

Outdated Mockups

liboverrides_datablock_view_mode.png liboverrides_dependency_view_mode.png

WIP -------------------- This task gathers the planned changes to the Outliner UI/UX regarding library overrides. It is partially related to #95707 (Library Override - System override IDs). There are three main identified tasks: NOTE: A third *Favorite* view mode is also planed for the Outliner, see #95816 (Library Override - 'Cherry-Picked' Properties) for details. Overrides *Properties* View Mode **** The current Outliner's 'flat' view of overrides should be moved into its own 'mode', and extended to show UI widgets for each overridden RNA properties. The focus of this view mode is the access to the actual (user-defined) overridden data of each ID. In that mode, new SystemOverrides data-block would not be visible by default (filter option), just like existing 'system override' properties (for ID pointers) are already hidden by default. Using the same option for both should make sense. Some common operations over overrides will be added in a contextual menu. [Mockup](https://design.penpot.app/#/workspace/a7414a30-82b8-11ec-9027-96385a0e391f/e4f33230-82a9-11ec-9027-96385a0e391f?page-id=e4f33231-82a9-11ec-9027-96385a0e391f): ![image.png](https://archive.blender.org/developer/F12952526/image.png) Tasks ------ - [x] Move current code/view into this new view mode. - [x] Add the RNA widgets. - [ ] Context menu - [x] List collection items and modification indicator (e.g. list modifiers and modified properties, and indicate which modifiers were added/removed). - d2a30abff09b Further tweaks: - [x] Show UI name of properties (with full RNA path in tooltip?) - d2a30abff09b - [x] Group individual path segments? (E.g. instead of {nav Objects > Beam2 > animation_visualization.motion_path.show_frame_numbers} show {nav Objects > Beam2 > Animation Visualization > Motion Paths > Show Frame Numbers}) - d2a30abff09b - [x] Disable blue highlight property buttons (redundant since it just indicates overriden properties, which they all are) - [D14416](https://archive.blender.org/developer/D14416) - [ ] Remove redundant override icons for individual properties. - [x] Remove Overrides listing from ViewLayer view - [D14411](https://archive.blender.org/developer/D14411) - [x] Remove *Current File* base element and external libraries from the Properties view mode - [D14410](https://archive.blender.org/developer/D14410) - [x] Display icons for *Objects*, *Materials*, *Images* etc. base elements? - [ ] Handle RNA widgets for array properties with length > 3 better (matrices, quaternions, etc.) - [x] Don't display empty base elements (e.g. "Collections" element if there are only system override collections) - a6214ce7ac - [ ] Don't stretch icon toggle-buttons over the entire column: ![image.png](https://archive.blender.org/developer/F12942527/image.png) Use the standard icon button size. - [ ] Make button column resizable, with minimum width for first column Overrides *Hierarchies View* Mode **** That new view mode will focus on showing and helping manage the override hierarchies, i.e. the relationships between IDs. As such, only 'root overrides' (and those who are not part of any hierarchy) will be shown at the first level (typically, collections). System Overrides will be shown in that mode. An button icon on the right will allow to toggle them to actual 'user' overrides. Some advanced management/fixing operations could also be added in a contextual menu, such as removing and override from a hierarchy, or moving it to another hierarchy. Those could be useful to fix broken cases. [Mockup](https://design.penpot.app/#/workspace/a7414a30-82b8-11ec-9027-96385a0e391f/e4f33230-82a9-11ec-9027-96385a0e391f?page-id=e4f33231-82a9-11ec-9027-96385a0e391f): ![image.png](https://archive.blender.org/developer/F12952524/image.png) Tasks ------ - [x] Add the new basic tree view. - [D14440](https://archive.blender.org/developer/D14440) - [x] Add the right column of system vs user overrides. - 994da7077d4a - [ ] Add/hook-up various hierarchy-related operations (set/change/clear root ID, set/clear system overrides, etc.). - [x] Also add the hierarchies for indirect library overrides (library overrides within linked libraries/IDs). - [D14440](https://archive.blender.org/developer/D14440) - [ ] Make warning display work for *Hierarchies* mode (in fact, generalize it to be supported anywhere). - f1df685f570b, 6feca523496b Refine Allowed Operations, Integrate System Override IDs and Root IDs **** This is mostly a lot of smaller tasks (new operators, refinement of poll/execution checks of existing ones, etc.). It should also include/take advantage of the new hierarchy root ID pointer, and system overrides concepts. Tasks ------ - [x] Rename 'Override' to 'Override Single', ~~and move it after the 'Override Hierarchy' option (make this one the most visible/obvious option).~~ *Better not break muscle memory, at least for now.* - [ ] Revise existing ID operations (e.g. override collections should not be allowed to be single-deleted; Only root override collections should be allowed to be moved around; etc.). - [ ] Add operators to control root IDs and SystemOverrides (advanced, useful to debug and fix broken cases). - [x] Revise how warnings (the triangle with `!` to the left of the items) are handled, make it more generic. - f1df685f570b ----- ## Outdated Mockups ![liboverrides_datablock_view_mode.png](https://archive.blender.org/developer/F12868413/liboverrides_datablock_view_mode.png) ![liboverrides_dependency_view_mode.png](https://archive.blender.org/developer/F12868416/liboverrides_dependency_view_mode.png)
Author
Owner

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Author
Owner

Added subscriber: @mont29

Added subscriber: @mont29
Contributor

Added subscriber: @RedMser

Added subscriber: @RedMser
Member

Added subscriber: @JulianEisel

Added subscriber: @JulianEisel
Member

Pushed some first changes to a branch temp-library-overrides-outliner. It does most work needed for displaying the buttons to edit the overridden properties in the Outliner. Looks like this: Screenshot from 2022-02-25 20-12-11.png Main TODO I see is handling longer arrays and matrices better. You can't really squeeze more than 3 items into the right column. In that case I think we should add the components as children again, like the Data API display mode does it.

Pushed some first changes to a branch `temp-library-overrides-outliner`. It does most work needed for displaying the buttons to edit the overridden properties in the Outliner. Looks like this: ![Screenshot from 2022-02-25 20-12-11.png](https://archive.blender.org/developer/F12887093/Screenshot_from_2022-02-25_20-12-11.png) Main TODO I see is handling longer arrays and matrices better. You can't really squeeze more than 3 items into the right column. In that case I think we should add the components as children again, like the *Data API* display mode does it.
Member

Worth noting for design evaluations, I decided to add the right column so that the left column can be scrolled independently, like we do it for the restriction toggles in other display modes.

This differs from the Data API mode, which just adds the column behind the width of the visible items, so you may have to scroll right to see the entire column: image.png Plus, it attaches the column weirdly to the left in wider layouts: image.png So I prefer the other solution.

Worth noting for design evaluations, I decided to add the right column so that the left column can be scrolled independently, like we do it for the restriction toggles in other display modes. This differs from the *Data API* mode, which just adds the column behind the width of the visible items, so you may have to scroll right to see the entire column: ![image.png](https://archive.blender.org/developer/F12887098/image.png) Plus, it attaches the column weirdly to the left in wider layouts: ![image.png](https://archive.blender.org/developer/F12887102/image.png) So I prefer the other solution.

Added subscriber: @Gabi_love

Added subscriber: @Gabi_love

Pushed some first changes to a branch temp-library-overrides-outliner. It does most work needed for displaying the buttons to edit the overridden properties in the Outliner. Looks like this: Screenshot from 2022-02-25 20-12-11.png Main TODO I see is handling longer arrays and matrices better. You can't really squeeze more than 3 items into the right column. In that case I think we should add the components as children again, like the Data API display mode does it.

I don't think that you should have multiple of the same icons in the bottom of the hierarchy (if all of them are overriden). Sorry for the jankey way it looks I did it in paint just for demonstration. You don't have to pick this icon just something with less visual clutter Screenshot_from_2022-02-25_20-12-11.png

> Pushed some first changes to a branch `temp-library-overrides-outliner`. It does most work needed for displaying the buttons to edit the overridden properties in the Outliner. Looks like this: ![Screenshot from 2022-02-25 20-12-11.png](https://archive.blender.org/developer/F12887093/Screenshot_from_2022-02-25_20-12-11.png) Main TODO I see is handling longer arrays and matrices better. You can't really squeeze more than 3 items into the right column. In that case I think we should add the components as children again, like the *Data API* display mode does it. I don't think that you should have multiple of the same icons in the bottom of the hierarchy (if all of them are overriden). Sorry for the jankey way it looks I did it in paint just for demonstration. You don't have to pick this icon just something with less visual clutter ![Screenshot_from_2022-02-25_20-12-11.png](https://archive.blender.org/developer/F12888124/Screenshot_from_2022-02-25_20-12-11.png)
Member

@Gabi_love agreed, this is something I wanted to address anyway. There's no need for icons at all there, it's just redundant and adds visual noise. But that would be a separate change, I'd like to do such polishing in master once the main usability features are there.

@Gabi_love agreed, this is something I wanted to address anyway. There's no need for icons at all there, it's just redundant and adds visual noise. But that would be a separate change, I'd like to do such polishing in master once the main usability features are there.

Added subscriber: @satishgoda1

Added subscriber: @satishgoda1
Member

One thing to check:

  • Agreement was to remove the Current File base element and external libraries from the Properties view mode. But should it be added for the Hierarchy mode? It seems like this is useful info that should at least be somewhere.
One thing to check: - Agreement was to remove the *Current File* base element and external libraries from the Properties view mode. But should it be added for the *Hierarchy* mode? It seems like this is useful info that should at least be somewhere.
Author
Owner

In #95802#1327238, @JulianEisel wrote:
One thing to check:

  • Agreement was to remove the Current File base element and external libraries from the Properties view mode. But should it be added for the Hierarchy mode? It seems like this is useful info that should at least be somewhere.

Yes I think it should definitely be in the hierarchy view, there you want to know whether your overrides are linked from a library (and which one), or if they are actually local. And whether you need to resync those linked files or not.

In the 'properties' view we don't need it because linked overrides should not be listed there (since they are not editable in any ways).

> In #95802#1327238, @JulianEisel wrote: > One thing to check: > - Agreement was to remove the *Current File* base element and external libraries from the Properties view mode. But should it be added for the *Hierarchy* mode? It seems like this is useful info that should at least be somewhere. Yes I think it should definitely be in the hierarchy view, there you want to know whether your overrides are linked from a library (and which one), or if they are actually local. And whether you need to resync those linked files or not. In the 'properties' view we don't need it because linked overrides should not be listed there (since they are not editable in any ways).

Removed subscriber: @Gabi_love

Removed subscriber: @Gabi_love

This issue was referenced by 1ff853a3f0

This issue was referenced by 1ff853a3f065ec51e78f3af6f4e71540783de501

This issue was referenced by dcb520a7af

This issue was referenced by dcb520a7af74fd600e3ed7db19751a2f64c3e981

This issue was referenced by 0c6dc7c59e

This issue was referenced by 0c6dc7c59ebd8d7857e8c078e37e285769fb5770

Added subscriber: @GeorgiaPacific

Added subscriber: @GeorgiaPacific

Added subscriber: @AlexeyAdamitsky

Added subscriber: @AlexeyAdamitsky

Added subscriber: @Emi_Martinez

Added subscriber: @Emi_Martinez
Author
Owner

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Bastien Montagne self-assigned this 2022-11-14 17:48:09 +01:00
Author
Owner

Think we can consider this task as done, at least in the liboverride project context. Further improvements obviously remain possible in the future..

Think we can consider this task as done, at least in the liboverride project context. Further improvements obviously remain possible in the future..
Thomas Dinges added this to the 3.4 milestone 2023-02-07 19:01:34 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
9 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#95802
No description provided.