Review Preselection in Outliner #37430
Labels
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
8 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#37430
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Anytime you click within an item's line, but not on the name, in the Outliner the item gets highlighted, as a preselection of sorts. This has it's uses but mostly is confusing and annoying to users.
This feature needs to be reviewed to see where it's valuable, how it could be improved, and whether or not it should stay.
Changed status to: 'Open'
Added subscribers: @JonathanWilliamson, @brecht
This actually is a deeper problem than it seems at first. When talking about objects making the selections sync makes sense, but for other types of datablocks there is no global concept of them being selected in Blender. So this is why the outliner has its own selection, because it works for every type of data.
This design task has the potential to go too broad in rethinking the selected/active system, which I want to avoid at this point (people can make a proposal on the wiki for that if they want). There may be some simpler or intermediate solution where for every type of data that does have its own selection it is always synced (objects, bones, anything else?), but that needs some careful thought to see if it can be designed in a way that isn't too confusing.
@brecht, yeah it's much more confusing than it initially seems. I think we should consider first whether anything other than objects should even be selectable in the Outliner. I'm tempted to say they should not. For example, is there any benefit to being able to select Datablocks within an object? Selection doesn't really do anything. You cannot move that datablock. You cannot directly edit by selecting it. And selecting it to make it active (in what ever way) does toggle other selected datablocks either, making it even more inconsistent.
I agree this needs a very carefully thought out proposal. I will continue mulling it over and then come back with a proposal for it.
Added subscriber: @BartekMoniewski
Added subscriber: @billrey
@JonathanWilliamson:
There is a benefit to being able to select datablock items: those datablocks can then be displayed in the Properties below the Outliner. So, the user clicks the material of an object, and that material is displayed in the properties.
But that doesn't negate the issue you raised. The confusion of different selections in different editors is real an unnecessary.
Here's my proposal:
Added subscriber: @simonrepp
Added subscriber: @00Ghz
Any updates on this?
@00Ghz not currently, but it's still something I hope to work on getting addressed soon.
Added subscriber: @JulianEisel
Hey guys, it currently looks like the layer manager I'm working on is going to be placed in the outliner, but I'd really like to improve outliner selection before doing that. So trying to get some attention back to this task.
I'm not sure why we can't simply sync outliner selection with object selection if the selected item is an object, like Brecht said earlier? At least, I don't see enough importance in the separated selection that justifies such an un-intuitive behavior. It doesn't seem like a commonly needed feature.
If we want to keep separated selection, we alternatively could do the following:
On top of that, we could add the properties editor syncing, as William proposed.
What annoys me much more is the highly inconsistent selection in the outliner though. When selecting an item it's added to the selection, whereby everywhere else in Blender, default is to deselect other items and select clicked item. Usual combinations with modifier keys don't work either.
Is that just because it has been coded like that during the 2.5 project and nobody changed since then, or are there more reasons for it?
Users manually syncing selection seems like a poor solution, we should avoid that unless there is really no better alternative.
It seem worth trying to sync selection for all data types that support it. It wouldn't necessarily involve actual syncing of the flags, two wrapper functions
tselem_is_selected()
andtselem_set_selected()
that internally usetselem->flag
or e.g.ob->flag
depending on the data type might be simplest? For objects setting the selection state also needs to modify theBase
though, so it's a bit more complicated probably, not sure how the layer changes will affect this.If we want to go further and do properties editor syncing or add a selection state for more data types, it gets more complicated.
I don't know what the rationale was for different selection behavior in the outliner was, it predates the 2.5 project.
I'm going to look into the selection syncing in the coming days, had something similar in mind as @brecht wrote.
Currently getting the base works using
BKE_scene_base_find
which uses slow listbase lookup. Could use a hash table, but not sure it's worth the extra memory. With the new layer system we could only iterate over the layers the object is in (object layers store aBase *
array in current implementation).Anyway, just brainstorming about alternatives, I don't see a big urgency in changing.
Will also look into making element selection consistent, this is actually more of an issue for the layer manager project than the selection syncing.
I'm not planning to look into properties editor syncing right now, but it's definitely something nice to have.
Yes, I think so. Everything else would be just confusing.
Current vanilla Blender works like this and I think it's pretty fine. It also selects the correct object when selecting a material.
Probably not a bad idea, but for later if at all.
The current properties editor has a weird scope. It contains scene settings and 3D View content settings, but not settings for other editors (movie clip editor, VSE, image editor, ...). It should either contain all settings of the scene and all editors, or it should only contain scene settings and each editor gets an own space to manage its settings (kinda like the properties region/n-panel, but meeeh). However, this is obviously a bigger design challenge too, nothing to discuss here and now ;) (would probably also need a more global selection context).
Let me propose to take the following steps:
And two things I'm not too sure about:
I'd really appreciate some quick feedback even if it's only a "+1" or "-1", since I'd like to start working on this now.
To put my first two points differently: Don't use any extra selection state in outliner, the outliner should only display and allow changing selection states of the data it represents.
I think it's definitely a good idea to try going in that direction.
We could give some UI indication about this, maybe with preselection highlighting to indicate which ones are selectable. For some data we might consider introducing selection at some point, while for the User Preferences display selection doesn't make any sense to me now, I don't think we'd lose anything in that example.
Not sure about this, there's so pros and cons. We could have a distinction between e.g. single click to select and double click to edit, though that also conflicts with double click to rename.
Added subscriber: @PawelLyczkowski-1
I would go with that, though I would only sync the selection (and highlight in Outliner) of items that have a physical presence in the 3d View. So, shift-LMB'ing on a material for instance would show that material in the Properties Editor, blink it once to confirm it was clicked , but wouldn't add it to the selection in the 3d View, and wouldn't keep it highlighted in the Outliner.
Unless there will be actions in the future that we'll be able to fire up in the Outliner that would affect multiple materials for instance (currently it seems it's not even possible to select more than one material). Then, I would go with: the non-physical datablock get's selected in Outliner, 3D View selection doesn't change.
I would go with the standard graying out things that can't be selected.
I would go with no. I would guess the usual intention to select a datablock is to change it's properties, and the usual intention of going into Edit mode is to edit : )
Clumping things that happen in the interface like that create confusion IMO, and it's better to have 1 good way to do something (Tab/Button in the 3d View), than 1 good way + 5 weak ways.
I guess making the interface less free and more 'standard' is a bad idea? Meaning - 1 Editor (except 3d View) per screen layout, global top bar, drag and droppable toolbars that can go in between areas, instead of the locked-in-place sidebars, a list of editors in a menu on the global bar from where they can be added, tabs in editors that users have often 2 instances of?
Committed first part of this to 2.8 branch,
9a9a663f40
. The commit message lists the exact changes, I'll add some info on what's still needed to the task description.The thing is the current Properties Editor depends on the object selection (except when using data-block fixing). Only object-settings/materials/etc of the active object are shown. Showing the materials of an unselected object would be pretty inconsistent behavior IMHO.
There's a difference between editable and selectable. E.g. in the "User Preferences" display mode, the Outliner shows a bunch of settings. These settings may be editable, but the properties they represent aren't selectable data. My idea was to not allow selecting these (non-editable items are already grayed out).
That's true, but there is still some reasoning to consider. For example in the case of armature bones, which are only selectable while in Pose or Edit Mode. If we don't toggle into Pose Mode when selecting a bone from the Outliner, the Outliner and 3D View selection would differ again and I'd say we agreed that Outliner shouldn't have its own separate selection if possible.
Further, Outliner would allow you to quickly select the bone, without having to open a 3D view and changing into Pose Mode first.
Note that current Blender actually changes modes based on Outliner selection, so we'd basically remove a feature which is always tricky. Feedback from users who often work with the Outliner would be valuable.
Blender's flexible windowing system is definitely one of its major strengths IMHO (and from many other opinions I've heard). Discussing this is outside of the scope of this task but I also don't think that this is a reasonable option. That said I do still think our windowing system can be further improved (and I have concrete plans for it, like the global topbar for example).
Yeah, it seems there are many cases where users have 2 editors of the same type open, so a single editor system is not feasible.
If there are multiple properties editors open, we can change just one editor when changing selection in the outliner.
We could have some settings to let the user specify which properties editor is the selection sensitive one. In most cases I imagine it being the first created properties editor in the screen is fine, and users would rarely need to change this.
There could be some visual indication for this, around the pin icon and data path.
I'm not sure it's even a problem for the properties editor. If there are 2 properties editors open, they are usually (and logically) in different modes/tabs, and I see that the tabs do not switch to, for instance, the material tab when selecting a material.
Could be more of a problem if you could browse images for instance in the Outliner - but I see that currently you can't.
Changed status from 'Confirmed' to: 'Archived'
This task is quite old and updated I think. Will close it in favor of #77408.