Page MenuHome

Library Overrides UI: Show library overrides in Outliner
AcceptedPublic

Authored by Julian Eisel (Severin) on Tue, May 5, 11:10 PM.

Details

Summary

Idea is to show library overrides in the Outliner, nested under their
data-block. That is consistent to how we show modifiers and constraints for
objects.
Later we could add toggles to disable or lock overrides. The context menus can
show further operations then.

NOTE: Due to performance reasons, only one object gets overridden at a time (in the current Library Overrides implementation at least). To get other overrides to show up in the UI (blue highlight on changed values and Outliner items), the file has to be reloaded. We may be able to address this short term.

Diff Detail

Repository
rB Blender
Branch
master
Build Status
Buildable 7898
Build 7898: arc lint + arc unit

Event Timeline

Julian Eisel (Severin) requested review of this revision.Tue, May 5, 11:10 PM
Julian Eisel (Severin) created this revision.
Julian Eisel (Severin) retitled this revision from Library Overrides UI: Show library overrides in outliner to Library Overrides UI: Show library overrides in Outliner.Tue, May 5, 11:22 PM
Julian Eisel (Severin) edited the summary of this revision. (Show Details)

Generally looks fine, though am not sure we do want to show all overrides like that? You can easily have many more of those, than you would have of modifiers - and on all types of datablocks…

So two questions there:

  • Do we want to have that info in regular Outliner views, or only in a new, dedicated view?
  • If we want it in regular views, should we add an option to disable this extra info (ON by default)?
source/blender/blenkernel/intern/lib_override.c
771

If the 'notifiers' are the printf, they should just be fully disabled by default I think, and have a special general DEBUG_OVERRIDE flag to make them show up?

I too was wondering about the complexity with many overrides, but I think given that they are collapsed by default it seems acceptable. It basically gives a nice indication that there are overrides and if you want to see all the details, you can expand them.

The consistency with modifiers and constraints sounds quite sweet to my ears, it doesn't need an extra display-mode then. An extra filter can be added, definitely - although I always try to avoid adding such options until there is reasonable demand.

source/blender/blenkernel/intern/lib_override.c
771

The code here needs to somehow inform ED_undo_push() about the overrides changes, so that it can trigger a notifier to let the Outliner refresh correctly.

Right now ret is only set to true if an override was created, not if one was reset - which is actually not what the doxygen comment above suggests. So I was a bit confused about that and didn't touch it.
I guess the notifier should also be sent on resets, so that the UI can be updated accordingly. So this function should either return true on resets too, or it can just return report_flags I suppose.

This seems alright to me. Curious what @Andy Goralczyk (eyecandy) thinks in the context of a production file.

This revision is now accepted and ready to land.Sat, May 16, 6:15 PM