Outliner Sorting and Dragdrop #68502

Open
opened 2019-08-10 12:38:57 +02:00 by William Reynish · 57 comments

Currently, the way you sort items in the Outliner is rather unclear.

We include this option in the Filter popover:
Screenshot 2019-08-10 at 12.34.35.png

But when you disable this, you cannot re-order objects manually - instead they are displayed in the order of creation.

Additionally, this toggle only affects objects, not Collections, which are always manually sorted.

We can make this a lot clearer and more consistent, like so.

  • Replace the Sort Alphabetically toggle with an enum for with different sorting methods:
    Screenshot 2019-09-22 at 10.48.41.png
  • Make it apply to everything: Objects, Bones & Collections.
  • When set to Free, you can then freely re-organize both Collections and objects manually.

Dragdrop is also closely related to sorting once we add custom sorting. We draw small black bars between items to indicate a sort dragdrop, and we shade the line dark when dropping into an item. We could improve on this.

Also, it would be good to allow object parenting without the shift modifier key.

Currently, the way you sort items in the Outliner is rather unclear. We include this option in the Filter popover: ![Screenshot 2019-08-10 at 12.34.35.png](https://archive.blender.org/developer/F7657375/Screenshot_2019-08-10_at_12.34.35.png) But when you disable this, you cannot re-order objects manually - instead they are displayed in the order of creation. Additionally, this toggle only affects objects, not Collections, which are always manually sorted. We can make this a lot clearer and more consistent, like so. - Replace the Sort Alphabetically toggle with an enum for with different sorting methods: ![Screenshot 2019-09-22 at 10.48.41.png](https://archive.blender.org/developer/F7768244/Screenshot_2019-09-22_at_10.48.41.png) - Make it apply to everything: Objects, Bones & Collections. - When set to Free, you can then freely re-organize both Collections and objects manually. --- Dragdrop is also closely related to sorting once we add custom sorting. We draw small black bars between items to indicate a sort dragdrop, and we shade the line dark when dropping into an item. We could improve on this. Also, it would be good to allow object parenting without the shift modifier key.
Nathan Craddock was assigned by William Reynish 2019-08-10 12:38:57 +02:00

Added subscribers: @WilliamReynish, @0o00o0oo, @natecraddock

Added subscribers: @WilliamReynish, @0o00o0oo, @natecraddock

Added subscriber: @hadrien

Added subscriber: @hadrien

Worth noting that currently bones can neither be sorted alphabetically, nor by hand. Would be super cool to have them benefit from all these enhancements, too !

Hadrien

Worth noting that currently bones can neither be sorted alphabetically, nor by hand. Would be super cool to have them benefit from all these enhancements, too ! Hadrien

Added subscriber: @simon_lusenc

Added subscriber: @simon_lusenc

Added subscriber: @Dogway

Added subscriber: @Dogway

Added subscriber: @RainerTrummer

Added subscriber: @RainerTrummer

Added subscriber: @machieb

Added subscriber: @machieb

Added subscriber: @adreacooper

Added subscriber: @adreacooper

Added subscriber: @Cedch

Added subscriber: @Cedch

Added subscriber: @TakingFire

Added subscriber: @TakingFire

Added subscriber: @Oskar3d

Added subscriber: @Oskar3d
Nathan Craddock changed title from Outliner Sorting to Outliner Sorting and Dragdrop 2020-07-07 18:38:07 +02:00

Added subscriber: @ckohl_art

Added subscriber: @ckohl_art

Added subscriber: @KyleYoungblom

Added subscriber: @KyleYoungblom

Added subscriber: @Peeeynk

Added subscriber: @Peeeynk

Added subscriber: @thecooper8

Added subscriber: @thecooper8

Added subscriber: @Delano762

Added subscriber: @Delano762

Added subscriber: @JanErik

Added subscriber: @JanErik

This feature would be really helpful

This feature would be really helpful

Added subscriber: @krisjo01

Added subscriber: @krisjo01

Added subscriber: @stjerneidioten

Added subscriber: @stjerneidioten

Added subscriber: @SayantanChaudhuri

Added subscriber: @SayantanChaudhuri

Added subscriber: @YegorSmirnov

Added subscriber: @YegorSmirnov

Added subscriber: @adambelis

Added subscriber: @adambelis

this would iprove UX a lot .

this would iprove UX a lot .

Removed subscriber: @machieb

Removed subscriber: @machieb

Added subscriber: @Renderbicks

Added subscriber: @Renderbicks

This is 3 years old and manual sort like possible with Collections would be a very useful feature.

This is 3 years old and manual sort like possible with Collections would be a very useful feature.

Added subscriber: @somaistaken

Added subscriber: @somaistaken

Added subscriber: @TheRedWaxPolice

Added subscriber: @TheRedWaxPolice

Added subscriber: @Dangry

Added subscriber: @Dangry

Added subscriber: @llealloo

Added subscriber: @llealloo

This is one of blenders worst remaining UX ticks.

Also, that bones of an armature are not sorted according to the selected sort method (and only strictly adhere to order of creation) seems like a UX bug in its current state

This is one of blenders worst remaining UX ticks. Also, that bones of an armature are not sorted according to the selected sort method (and only strictly adhere to order of creation) seems like a UX bug in its current state
Philipp Oeser removed the
Interest
User Interface
label 2023-02-10 09:25:25 +01:00

I agree with @llealloo

Has there been any consideration on this issue in recent years?🙈

Having the possibility to freely move and place the objects in the ouliner will for sure improve organization and increase the wokflow efficency. Also when you work with scenes which contains a lot of objects, it would be really helpful to place the objects exactly where you want them instead of thinking about the object naming.

I agree with @llealloo Has there been any consideration on this issue in recent years?🙈 Having the possibility to freely move and place the objects in the ouliner will for sure improve organization and increase the wokflow efficency. Also when you work with scenes which contains a lot of objects, it would be really helpful to place the objects exactly where you want them instead of thinking about the object naming.

We really need this! As said above, to be able to organize all objects as needed in the outliner will increase workflow efficency and will save alot of time!

We really need this! As said above, to be able to organize all objects as needed in the outliner will increase workflow efficency and will save alot of time!

Subscribing! Ability to reorder items in Outliner would be a very useful feature

Subscribing! Ability to reorder items in Outliner would be a very useful feature

My friends work in Cinema 4D and I want them to be able to move from there to Blender more easily. This feature is extremely necessary!

My friends work in Cinema 4D and I want them to be able to move from there to Blender more easily. This feature is extremely necessary!

I agree with the others. this is one of the main disadvantages of blender outliner. It's time to close it

I agree with the others. this is one of the main disadvantages of blender outliner. It's time to close it

It's a no-brainer to have this implemented.

I'm surprised nobody has hopped on this one- seems like a rather fun / easy-to-squash challenge for a UI dev. Would have a big impact on UX

It's a no-brainer to have this implemented. I'm surprised nobody has hopped on this one- seems like a rather fun / easy-to-squash challenge for a UI dev. Would have a big impact on UX

It's a no-brainer to have this implemented.

I'm not so sure
This might be very hard to do, otherwise someone would've done it already

> It's a no-brainer to have this implemented. I'm not so sure This might be very hard to do, otherwise someone would've done it already

I think you misunderstood. I meant it's a no-brainer that the feature is worthwhile to add in terms of UX.

It could very well be a challenge, but it would be worth it and could lead to even better things in the future if it is setup properly.

And, I highly doubt it is that hard no matter the direction chosen. These are basic principles in programming. I could think of a few ways to structure it:

  1. add a new integer data value to objects in the scene to represent sort order that gets maintained / modified as needed (this seems ideal, because it may lead to neat and already well-understood things down the road i.e. generator objects with ordered children as inputs a-la cinema4d)

  2. or, outliner has its own silo'd database/dictionary of objects and their orders (this seems messier, more work to manage, and holds less value for future potentials)

I think you misunderstood. I meant it's a no-brainer that the feature is worthwhile to add in terms of UX. It could very well be a challenge, but it would be worth it and could lead to even better things in the future if it is setup properly. And, I highly doubt it is that hard no matter the direction chosen. These are basic principles in programming. I could think of a few ways to structure it: 1) add a new integer data value to objects in the scene to represent sort order that gets maintained / modified as needed (this seems ideal, because it may lead to neat and already well-understood things down the road i.e. generator objects with ordered children as inputs a-la cinema4d) 2) or, outliner has its own silo'd database/dictionary of objects and their orders (this seems messier, more work to manage, and holds less value for future potentials)

Alright. And yes, this feature is worthwhile of course and has been requested many times as you can see in this thread..
But still, it seems to be very tough tho. Even the person that worked exclusively in the outliner for the summer of code wasn't able to do it.

Alright. And yes, this feature is worthwhile of course and has been requested many times as you can see in this [thread..](https://devtalk.blender.org/t/gsoc-2019-outliner-improvements-ideas/7185/26#:~:text=sort%20objects%20with%20drag%20and%20drop%20and%20without%20alphabetic%20order) But still, it seems to be very tough tho. Even the person that worked exclusively in the outliner for the summer of code wasn't able to do it.

But still, it seems to be very tough tho. Even the person that worked exclusively in the outliner for the summer of code wasn't able to do it.

@Regnas I am pretty sure that was more of time frame problem, that there simply wasn't enough time to do it (unfortunately).

> But still, it seems to be very tough tho. Even the person that worked exclusively in the outliner for the summer of code wasn't able to do it. @Regnas I am pretty sure that was more of time frame problem, that there simply wasn't enough time to do it (unfortunately).

@krisjo01 Hm, not sure time was the issue. There was gsoc outliner 2019 and 2020. Plenty of time I think.
This was one of the most requested feature, if it was that simple he would've done it.
This year there was the gsoc outliner tree refactoring... I hope that after this, things will be a lot easier to implement. But maybe I'm wrong.

@krisjo01 Hm, not sure time was the issue. There was gsoc outliner 2019 and 2020. Plenty of time I think. This was one of the most requested feature, if it was that simple he would've done it. This year there was the gsoc outliner tree refactoring... I hope that after this, things will be a lot easier to implement. But maybe I'm wrong.

@Regnas looks like both time and the fact that the original implementation plan wasn't the best solution

https://devtalk.blender.org/t/outliner-gsoc-follow-up-feedback/15948/78

@Regnas looks like both time and the fact that the original implementation plan wasn't the best solution https://devtalk.blender.org/t/outliner-gsoc-follow-up-feedback/15948/78

Yeah man, like he said "it’s a bigger project"

Looks like we are doomed hahaha...

Yeah man, like he said _"it’s a bigger project"_ Looks like we are doomed hahaha...

Hehe yeah unfortunately😅

Hehe yeah unfortunately😅

Thanks for linking the other threads!

Sometimes it takes some time away from a round of initial ideas to let the best plan of attack percolate up to the surface. It has been 2 years since they were discussing this. Maybe it's actually the perfect time for fresh eyes to prevail?

Digging into what they were on previously, it looks like they were going for something akin to the #2 that I mentioned: where sort order data is strictly UI-based / silo'd. This might seem like the easier option for a quick fix that doesn't disturb other structures, but it actually becomes a bigger project for the same reason.

It is worth not limiting it to UI only. Ordered data can be almost immediately useful pretty much everywhere. Now there are new workflows (like geometry nodes) which might benefit from an indexed child input, as well the python api. The list goes on.

Adding an integer value to describe sort order into the object dataset is not that big of a project. I hope someone considers taking it up.

Thanks for linking the other threads! Sometimes it takes some time away from a round of initial ideas to let the best plan of attack percolate up to the surface. It has been 2 years since they were discussing this. Maybe it's actually the perfect time for fresh eyes to prevail? Digging into what they were on previously, it looks like they were going for something akin to the #2 that I mentioned: where sort order data is strictly UI-based / silo'd. This might seem like the easier option for a quick fix that doesn't disturb other structures, but it actually becomes a bigger project for the same reason. It is worth not limiting it to UI only. Ordered data can be almost immediately useful pretty much everywhere. Now there are new workflows (like geometry nodes) which might benefit from an indexed child input, as well the python api. The list goes on. Adding an integer value to describe sort order into the object dataset is not that big of a project. I hope someone considers taking it up.

Yes, really hope it won't be another 2 years before we see this added to Blender 😅

Yes, really hope it won't be another 2 years before we see this added to Blender 😅

@llealloo Sounds like a good idea for a plug in ;-)

@llealloo Sounds like a good idea for a plug in ;-)

@llealloo Sounds like a good idea for an add-on ;-)

@llealloo Sounds like a good idea for an add-on ;-)

Rendering this type of functionality into a plugin or add-on would be hokey at best. If implemented, this should be part of the fabric of Blender itself.

Rendering this type of functionality into a plugin or add-on would be hokey at best. If implemented, this should be part of the fabric of Blender itself.

@llealloo Didn't mean to post that twice. Fair enough, I have no idea how programing works, unfortunately. But I've been waiting for this one for years!

@llealloo Didn't mean to post that twice. Fair enough, I have no idea how programing works, unfortunately. But I've been waiting for this one for years!

Could you pls stop spamming in this develompent thread, its not the right place.
Many people know that this would be an useful addition to the outliner and waiting for such a feature for years.

The outliner code is very messy right now. You could all take a look at the C/C++ code yourself.
But there is an ongoing effort to make the whole outliner code more object oriented. Also see here

I think this would also facilitate the development of new outliner features like this.
And there is also the problem of available developer time. So I guess we have to be patient.

Could you pls stop spamming in this develompent thread, its not the right place. Many people know that this would be an useful addition to the outliner and waiting for such a feature for years. The outliner code is very messy right now. You could all take a look at the C/C++ code yourself. But there is an ongoing [effort](https://devtalk.blender.org/t/gsoc-2023-outliner-tree-refactoring/29355/14) to make the whole outliner code more object oriented. Also see [here](https://projects.blender.org/blender/blender/issues/96713) I think this would also facilitate the development of new outliner features like this. And there is also the problem of available developer time. So I guess we have to be patient.

It is needed to be able to freely sort objects in the outliner. We shouldn't have to add a collection to give us the ability to set the order.

It is needed to be able to freely sort objects in the outliner. We shouldn't have to add a collection to give us the ability to set the order.

Using Photoshop, Affinity Photo / Designer, Unreal and many other since years, every program has this functionallity and it feels naturally to sort by our own preferences.

This missing feature in blender is really needed and it is frustrating to see, that this thread exists since 5 years.

Using Photoshop, Affinity Photo / Designer, Unreal and many other since years, every program has this functionallity and it feels naturally to sort by our own preferences. This missing feature in blender is really needed and it is frustrating to see, that this thread exists since 5 years.

Why has this till not been added? Is there anthing blocking design wise?

Why has this till not been added? Is there anthing blocking design wise?

@DanGry It seems that somebody work since 2 (two!) years on an update. This part of code must be incredible.
I wonder, why they not just implement a new outliner, instead of fixing this old complex code, that obvious is really hard to maintain.

@DanGry It seems that somebody work since 2 (two!) years on an update. This part of code must be incredible. I wonder, why they not just implement a new outliner, instead of fixing this old complex code, that obvious is really hard to maintain.
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
33 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#68502
No description provided.