Library Override - Outliner UI/UX #95802

Closed
opened 12 months ago by mont29 · 21 comments
Owner

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)
Poster
Owner

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

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

Added subscriber: @mont29

Added subscriber: @mont29

Added subscriber: @RedMser

Added subscriber: @RedMser
Collaborator

Added subscriber: @JulianEisel

Added subscriber: @JulianEisel
Collaborator

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.
Collaborator

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)
Collaborator

@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
Collaborator

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.
Poster
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
Collaborator

This issue was referenced by 1ff853a3f0

This issue was referenced by 1ff853a3f065ec51e78f3af6f4e71540783de501
Collaborator

This issue was referenced by dcb520a7af

This issue was referenced by dcb520a7af74fd600e3ed7db19751a2f64c3e981
Collaborator

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
Poster
Owner

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
mont29 closed this issue 3 months ago
mont29 self-assigned this 3 months ago
Poster
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..
ThomasDinges added this to the 3.4 milestone 3 days ago
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/Collada
Interest/Compositing
Interest/Core
Interest/Cycles
Interest/Dependency Graph
Interest/Development Management
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/Modeling
Interest/Modifiers
Interest/Motion Tracking
Interest/Nodes & Physics
Interest/Overrides
Interest/Performance
Interest/Performance
Interest/Physics
Interest/Pipeline, Assets & I/O
Interest/Platforms, Builds, Tests & Devices
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
legacy module/Animation & Rigging
legacy module/Core
legacy module/Development Management
legacy module/Eevee & Viewport
legacy module/Grease Pencil
legacy module/Modeling
legacy module/Nodes & Physics
legacy module/Pipeline, Assets & IO
legacy module/Platforms, Builds, Tests & Devices
legacy module/Python API
legacy module/Rendering & Cycles
legacy module/Sculpt, Paint & Texture
legacy module/Triaging
legacy module/User Interface
legacy module/VFX & Video
legacy project/1.0.0-beta.2
legacy project/Asset Browser (Archived)
legacy project/BF Blender: 2.8
legacy project/BF Blender: After Release
legacy project/BF Blender: Next
legacy project/BF Blender: Regressions
legacy project/BF Blender: Unconfirmed
legacy project/Blender 2.70
legacy project/Code Quest
legacy project/Datablocks and Libraries
legacy project/Eevee
legacy project/Game Animation
legacy project/Game Audio
legacy project/Game Data Conversion
legacy project/Game Engine
legacy project/Game Logic
legacy project/Game Physics
legacy project/Game Python
legacy project/Game Rendering
legacy project/Game UI
legacy project/GPU / Viewport
legacy project/GSoC
legacy project/Infrastructure: Websites
legacy project/LibOverrides - Usability and UX
legacy project/Milestone 1: Basic, Local Asset Browser
legacy project/Nodes
legacy project/OpenGL Error
legacy project/Papercut
legacy project/Pose Library Basics
legacy project/Retrospective
legacy project/Tracker Curfew
legacy project/Wintab High Frequency
Meta/Good First Issue
Meta/Papercut
migration/requires-manual-verification
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 & Devices
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 Information 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

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#95802
Loading…
There is no content yet.