No Branch/Tag Specified
main
temp-sculpt-dyntopo
refactor-mesh-face-generic
blender-v3.3-release
refactor-mesh-corners-generic
refactor-mesh-sharp-face-generic
gpencil-new-data-proposal
overlay-next
temp-sculpt-roll-mapping
sculpt-dev
tmp-volume-matrix-api-update
tmp-eevee-shadow-commit-mp
universal-scene-description
cycles_path_guiding
temp-vulkan-descriptor-sets
tmp-eevee-shadow-commit
temp-angavrilov
asset-shelf
brush-assets-project
tmp-workbench-rewrite2
temp-T101739-fix-seam-bleeding-non-manifold
tmp-mak-012623
temp-bundled-assets
asset-lite-greasepencil
temp-pbvh-split
temp-pbvh-texpaint-automasking
microfacet_hair
tmp-worbench-rewrite2-optimizations
temp-offset-array-ref
blender-v2.93-release
blender-projects-basics
temp-pbvh-seam-texturing-tweaks
temp-nodes-group-declarations
refactor-mesh-sharp-edge-generic
temp-asset-library-all
refactor-mesh-uv-map-generic
refactor-mesh-position-generic
temp-T102440
temp-rbf-pose-blender
geometry-nodes-tetrahedralization
nodes-matrix-types
temp-xr-painting
blender-v3.4-release
geometry-nodes-simulation
bli-matrix-template
temp-linux-35x-libs
refactor-mesh-corner-normals-lazy
temp-py-gpubatch-draw-advanced
xr-dev
temp-vulkan-shader
bevelv2
soc-2022-soft-bodies
arcpatch-D16436
tmp-dynamic-usd
temp-image-engine
tmp-vfx-platform-2023
soc-2022-many-lights-sampling
tracking_tools
nla-scale-fix
principled-v2
temp-ui-cpp
temp-ghost-vulkan
tmp-libs-2.93-lts
temp-T97352-3d-texturing-seam-bleeding-b2
temp-xr-virtual-camera-experiment
temp-vse-retiming-tool
gpencil-next
temp-sculpt-brush-channel
asset-browser-grid-view
temp-asset-representation
temp-gpencil-automask
tmp_libs_34
temp-T101905-gpu-backend-argument
node-add-asset-menu
temp-collection-objects-link-multiple
temp-texture-painting-gpu
tmp-workbench-perf-experiment
tmp_usd_import_unbound_mtls
tmp-drw-split-matrix
temp-sculpt-normals-masking
temp-sculpt-cavity-mask
temp-pbvh-vbos
tmp-usd-alab-v2-T100452
refactor-mesh-selection-generic
temp-T96708-brush-texture-refactoring
temp-chunk-list
feature-imformat
temp-geometry-nodes-evaluator-refactor
refactor-mesh-bevel-weight-generic
temp-chunked-list
temp-outliner-new-element-storage
refactor-mesh-remove-pointers
soc-2022-text-usability
refactor-mesh-material-index-generic
drw-manager-next
refactor-mesh-hide-generic
blender-v3.2-release
sculpt_curve_collisions
temp-anim-editors-redo-panel-D14960-D14977
retopo_transform
temp-libepoxy
temp-T99046-platform-reference-images
geometry-nodes-rigid-body-integration
file-browser-grid-view
temp-legacy-mesh-format-option
arcpatch-D14645
soc-2022-waveform-drawing
temp-T95933-object-mode-curve-selection
temp-deform-curves-on-surface
cycles_oneapi
temp-viewport-compositor-merge
temp-texpaint-automasking
temp-deform-curves-with-surface
asset-greasepencil
temp-T99046-render-test-increase-fail-threshold
temp-T98708-gpu-conservative-depth
lineart-shadow
temp-lineart-contained
cleanup-id-override-const
temp-T98375-share-gpu-textures
wintab
temp-T97352-3d-texturing-seam-bleeding
temp-T97905-compositor-meta-data
lineart-cas-2
temp-T97272
temp-T97907-compositor-meta-data
temp-T96952
tmp-usd-mak-c87f6242
temp-outliner-library-override-hierarchy
lineart-object-load
tmp-eevee-next-merge
draw-deferred-compilation-experiment
soc-2021-porting-modifiers-to-nodes-remesh-voxel
blender-v2.83-release
tmp_lib_update_32
temp-mesh-cpp
temp-viewport-compositor-compiler
temp-T96710-pbvh-pixels
tmp-new-gpu-codegen
devirtualizer
temp-T96709-painting-target
temp-collection-assets
temp-lineart-embree
temp-multi-function-eval-varray
temp-sculpt-colors
soc-2021-curves
blender-v3.1-release
temp-vertex-paint
temp-vse-channels-edge-panning
eevee-rewrite
temp-library-overrides-outliner
cycles_hydra
temp-3d-texturing-brush-b
temp-abc-features
tmp-transform-navigate
temp-image-buffer-rasterizer
soc-2021-porting-modifiers-to-nodes-remesh-blocks
temp-3d-texture-brush-prototype
temp-fix-normals-custom-data
viewport-compositor
bli-math-basic-types
soc-2021-simulation-display
greasepencil-object
temp-license-header-spdx
KTX_support
gsoc-2021-porting-modifiers-to-nodes-solidify
2d
gltf_vtree
soc-2021-porting-modifiers-to-nodes-decimate
temp-T95279-remap-referenced-data
temp-gpu-image-engine
tmp-eevee-rewrite-compilation-error
draw-viewport-data
temp-T94900-b
temp-T94900-gpu-viewport-default-layers
temp-T94185-id-remapper-ui
tmp-workbench-shader-create-infos
blender-v3.0-release
temp-geometry-nodes-extrude-mesh
tmp-T95052
tmp-gpu-polyline-shaders
tmp-gpu-shader-descriptor-2
temp-usd-prev-export2
tmp-core-id-remap-test-cases
temp-vert-normals-cleanup
temp-move-geometry-to-cpp
tmp-vector-template
drw-gpu-wrapper
temp-geometry-nodes-extrude-and-scale
temp-scale-elements-node-test
temp-usd-udim-import
temp-copy-on-write
temp-T94185-id_remapping-experiment-a
temp-llvm-testing
nurbs-opencascade
temp-usd-preview-surf-export
soc-2021-uv-edge-select-support
T93558
temp-gpu-texture-partial-updates
gpu-shader-descriptor
temp-geometry-nodes-text
tmp-vulkan
temp-T90535-usd-alab-material-import
node-tree-update-refactor
temp-sample-sound-node
temp-interface-region-search-cpp
temp-enum-socket
temp-link-portals
temp-unity-build-test
geometry-nodes-level-set-nodes
temp-virtual-array-value-type
soc-2020-io-performance
studio-sprite-fright
temp-cycles-source-reorganize
asset-browser-snap-dragging
temp-python-zstandard
soc-2021-porting-modifiers-to-nodes-merge-by-distance
temp-compositor-cleanups
temp-eevee-gpencil-rewrite
temp-vse-handles
temp-ui-tweaks
xr-controller-support
temp-node-common-cpp
temp-varray-get-set-multiple
soc-2021-uv-editor-improvements
temp-geometry-nodes-output-attributes
soc-2021-knife-tools
temp_test_sc_keymap
cycles-x
temp-field-visualization
soc-2021-curve-fillet
temp_bmesh_multires
temp-cocoa-scroll-acceleration-fix
temp-socket-decl-refactor
fluid-mantaflow-gpu
soc-2021-vse-strip-thumbnails
temp-noise-nodes-cpp
temp-compositor-canvas
T90952
temp-parallel-multi-function
temp-geometry-nodes-fields
grab_walk_fix
soc-2021-adaptive-cloth
temp-geometry-nodes-fields--fields-jacques
temp-cpp-ghc-filesystem
temp-geometry-nodes-fields--fields
temp-geometry-nodes-fields--anonymous-attributes
refactor-idprop-ui-data
compositor-full-frame
temp-runtime-node-def
temp-geometry-nodes-fields-prototype-visualization
temp-geometry-nodes-fields-prototype
temp-multi-function-procedure
soc-2021-porting-modifiers-to-nodes_all
cycles_texture_cache
experimental-build
cycles_procedural_api
soc-2021-porting-modifiers-to-nodes-extrude-and-move
soc-2021-porting-modifiers-to-nodes-extrude
temp-geometry-nodes-expandable-geometry-socket-prototype
fluid-mantaflow-2d
windows_make_docpy
usd-importer-T81257-merge
nodes-update-readonly-tag
geometry-nodes-closest-points
tmp-buildbot-gcc-10
soc-2021-geometry-nodes-regression-test
node-group-single-socket-nodes
curve-nodes-modifier
temp-geometry-nodes-curve-sample
geometry-nodes-unnamed-attributes
temp-nodes-intersect-alt-key
tmp_arcpath-D11868
refactor-vertex-group-names
temp-gpencil-bezier-stroke-type
temp-gpu-uniform-builtin-structs
wintab_fallback_walknav
temp-socket-inspection
temp-long-link-dimming
fixed_width_integers
lineart-bvh
temp-gpencil-camera-reproject
temp-gpu-push-constants
temp-attribute-processor
temp-cpp-type-cleanup
temp-geometry-nodes-curve-deform-node
wintab-logging
fix-tablet-walk
geometry-nodes-raycast
temp-spreadsheet-row-filter
lineart-fn-cached
temp-compact-node-prototype
asset-browser
geometry-nodes-curve-to-points-node
node-editor-edge-pan
eevee-gpencil
asset-system-filelist
temp-geometry-nodes-viewer-node
lineart-fn-thread-loading
tmp-buildbot-cleanup
temp-gpencil-masking
temp-ffmpeg-4.4
temp-attributes-panel
profiler-editor
FixT87160_DSE_Channel_Selection
temp-interface-cpp
geometry-nodes-curve-support
info-editor-cpp
temp-attribute-transfer-node
virtual-array-attributes
temp-pose-slide-D9054
spreadsheet-active-node
ui-asset-view-template
temp-node-tree-pages-prototype
override-outliner-view
temp-geometry-nodes-processor-prototype
temp-any-instead-of-variant
temp-unreachable-abort
temp-spreadsheet-instances
temp-geometry-nodes-instances-api-v2
temp-geometry-nodes-instances-attributes
geometry-nodes-mesh-primitives
temp-asset-tools-prototype
temp-geometry-nodes-mesh-primitive-line
lanpr-under-gp
temp_D10504-2_nla_keyframe_remap_upper_strips
blender-v2.92-release
usd-importer-T81257
temp-spreadsheet-editor-python-prototyping
temp-spreadsheet-editor
override-refactor-tmp-2
temp-derived-node-tree-refactor
T85799
tracking_scopes
temp-icons-fixes
temp_D10504_nla_keyframe_remap_upper_strips
temp-weight_mirror
temp_T76472_graph_editor_fcurve_extrapolation
eevee-closure-lib-cleanup
eevee-dof-refactor
eevee-probe-roughness-fix
eevee-ggx-lut-fix
df0bce3f7d0
temp-geometry-nodes-instances-api
tmp-ocio-v2
temp-nodes-redesign
tracking_proportional_editing_v2
blender-v2.91-release
temp-uv-face-select-no-thresh-when-inside
temp-D10103-nla_support_strip_overlap_during_transform
fracture_modifier
temp-point-distribution-refactor-experiment
temp-experimental-cpp-math-refactor
vfx-clip-ui-update
tmp-T82230-nla_remove_hold_reset_behavior
temp-D8687-directly_select_fcurves
geometry-nodes
soc-2020-testing-frameworks
geometry-nodes-point-separate-node
temp-nla-strip-alignment
temp-atomics-int16
geometry-nodes-deduplicate-float-math
asset-metadata
geometry-nodes-active-modifier-drawing
attribute-accessor
geometry-nodes-attribute-nodes
temp-T82588-box-select-invisible-keys
greasepencil-edit-curve
codesign_error_tracker
outliner-cpp-refactor
temp-fix-headerless-panels-switch-windows
temp-gpencil-fading-modifier
temp-D8915-copy-rotation-remove-sheer
geometry-nodes-boolean-node
temp-T81874-box-select-active-keyframe
geometry-nodes-transform-node
temp-trimesh-sculpt
geometry-tree-evaluation
fcurve-modifier-panels
temp-fcurve-key-insert-follow-curve
temp-fcurve-active-keyframe-D7737
mesh-to-volume-modifier
blender-v2.90-release
soc-2020-fluid-tools
property-search-ui-v2
tmp-T80603
soc-2020-greasepencil-curve
tmp-gldebuglayer
tmp-gltexture
soc-2020-custom-menus
active-fcurve-keyframe
soc-2020-soft-body
newboolean
fail-on-memleak
soc-2020-outliner
soc-2020-production-ready-light-tree-2
soc-2020-info-editor
property-search-ui
temp-ui-button-type-refactor
soc-2020-production-ready-light-tree
particle-solver-dev
tmp-gpu-context-isolation
soc-2020-xr-input
temp-remesh-octree
mac_arm64
tmp-eevee-glsl-cleanup
tmp-pointcloud-render
buildbot-lts
asset-engine--archived
asset-uuid--archived
eevee-motionblur-object
modifier-panels-ui
temp-cycles-tbb
wm-drag-drop-rewrite
temp-lanpr-review
gsoc-2018-many-light-sampling
tmp-eevee-material-refactor
tmp-widget-opti
tmp-texture-sampler
xr-world-navigation
blender-v2.82-release
node-tree-ref
simulation-access-modifier
blenloader-decentralization
temp-test-point-cloud-simulation-depsgraph-integration
functions
builtin-simulation-nodes
performance-test
obj-import-experiments
soc-2019-openxr
vr_scene_inspection
blenloader-api
tmp-workbench-rewrite
id-ensure-unique-memory-address
simulation-tree
greasepencil-refactor
draw-colormanagement
temp-gizmo-decoupled-redraws
fluid-mantaflow
blender-v2.81-release
tmp-overlay-engine
soc-2019-bevel-profiles
temp-npr-gpencil-modifiers
soc-2019-npr
temp-gpencil-drw-engine
soc-2019-embree-gpu
temp-npr-smooth-contour
temp-lanpr-staging
filebrowser_redesign
tmp-eevee-shadowmap-refactor
vamr-openxr-module
sculpt-mode-features
soc-2019-adaptive-cloth
tmp-drw-callbatching
soc-2019-outliner
soc-2019-cycles-procedural
temp-D5423-update
temp-vr-draw-thread
blender-v2.80-release
tmp-batch-cache-cleanup
soc-2019-fast-io
temp-toolsystem-multiwindow
blender2.7
collada
soc-2018-npr
temp-keymap-industry-compat
temp-fracture-modifier-2.8
temp-dna-rename
userpref_redesign
hair_object
motion_curve_fix
collada2.8
cycles_embree
interactive_physics
temp-ui-layout-2.8
cloth-improvements
soc-2018-cycles-volumes
hair_guides_grooming
hair_guides
benchmark
soc-2018-bevel
soc-2018-hair-shader-fixes
temp-udim-images
soc-2018-hair-shader
temp-volume-object
cycles_cryptomatte
temp-eeveelightcache
temp-tab_drag_drop
temp-keymap-save
temp-dynamic-overrides
fracture_modifier-master
ui_layout_gridflow
temp-keymap-changes
tmp-CollectionsAnim
tmp-b28-motionpath-drawing
uv_unwrapping_slim_algorithm
blender-v2.79b-release
tmp-COW_InsertKeyframe_Fix
temp-unified-collections
temp-modifier-rm-cddm
tmp-TimelineHeaderButtonsStretching
blender2.8-workbench
soc-2017-normal-tools
cycles_bvh8
blender-v2.79a-release
temp-scene-obedit-remove
temp-workspace-object-mode-removal
blender-v2.79-release
soc-2017-sculpting_brush
split-kernel-faster-building
id_override_static
openvdb
custom-manipulators
soc-2016-uv_tools
soc-2016-pbvh-painting
soc-2017-vertex_paint
soc-2017-sculpting_improvements
soc-2017-package_manager
strand_editmode
smooth-fcurves
id_copy_refactor
gsoc2016-improved_extrusion
temp-ssr
temp-cycles-opencl-staging
temp-cycles-denoising
ge_2df_textures
HMD_viewport
soc-2016-multiview
transform-manipulators
datablock_idprops
cycles_disney_brdf
temp_cycles_split_kernel
cycles_split_kernel
unlock_task_scheduler
uv_unwrapping_slim_and_ceres
surface-deform-modifier
cycles-tiles-rework
soc-2016-cycles_denoising
temp-layers-ui-table
uiTable
render-layers
clay-engine
multi_previews_id
cycles_disney_bsdf_transmittance
layers
pbr-viewport
temp_display_optimization
viewport_bvh_select
temp-cycles-microdisplacement
soc-2016-cycles_images
strand_nodes
object_nodes
asset-experiments
soc-2016-sculpt_tools
temp_viewport_fx_merge
custom-normals-bmesh
temp-decklink
compositor-2016
decklink
BendyBones
cycles_panorama_experiments
temp_remove_pointcache
temp_remove_particles
temp_depsgraph_split_ubereval
temp_textedit_comment_toggling
GPencil_Editing_Stage3
temp_bge_moto
UI-experiments
UI-graphical-redesign
missing-libs
free-refcount-ids
cycles_camera_nodes
epic-navigation
temp-ui-widget-refactor
gooseberry_farm
gooseberry
temp-ghash-experiments
temp-ghash-setops
temp_motionpaths
fcurves-simplify
soc-2014-fluid
GPU_data_request
depsgraph_refactor
multiview
vertex_paint_pbvh
alembic_pointcache
cycles-ptex-49
viewport_experiments
soc-2014-bge
texture_nodes_refactor
input_method_editor
GPencil_EditStrokes
soc-2014-shapekey
terrible_consequencer
GPencil_FillStrokes
libmv_prediction
blender2.4
dyntopo_holes
soc-2014-viewport_context
gtest-staging
blender-tiles
soc-2014-viewport_fx
soc-2014-remesh
soc-2014-nurbs
pie-menus
soc-2014-cycles
soc-2013-paint
particles_refactor
soc-2013-viewport_fx
tiles-scheduler
bake-cycles
soc-2013-cycles_volume
overscan
soc-2013-depsgraph_mt
soc-2013-dingto
soc-2013-sketch_mesh
soc-2013-rigid_body_sim
soc-2011-tomato
soc-2013-bge
soc-2013-motion_track
soc-2013-ui_replay
soc-2012-sushi
ge_dev
soc-2013-depsgraph_eval
soc-2008-mxcurioni
soc-2012-bratwurst
soc-2012-swiss_cheese
soc-2012-fried_chicken
meshdata_transfer
smoke2
tile
soc-2011-cucumber
bmesh
soc-2011-carrot
cycles
soc-2011-garlic
soc-2011-radish
soc-2010-nicks
vgroup_modifiers
soc-2011-pepper
soc-2010-jwilkins
merwin-spacenav
bge_components
soc-2010-merwin
render25
soc-2010-nicolasbishop
soc-2009-chingachgook
soc-2010-nexyon
soc-2010-aligorith
ge_eigen2
sculpt25
soc-2009-jaguarandi
soc-2009-imbusy
soc-2009-kazanbas
blender2.5
volume25
soundsystem
soc-2009-aligorith
sim_physics
ge_dome
etch-a-ton
soc-2008-nicholasbishop
animsys2
projection-paint
harmonic-skeleton
soc-2008-jaguarandi
fluidcontrol
apricot
soc-2008-quorn
cloth
ndof
orange
v2.93.14
v3.3.3
v2.93.13
v2.93.12
v3.4.1
v3.3.2
v3.4.0
v3.3.1
v2.93.11
v3.3.0
v3.2.2
v2.93.10
v3.2.1
v3.2.0
v2.83.20
v2.93.9
v3.1.2
v3.1.1
v3.1.0
v2.83.19
v2.93.8
v3.0.1
v2.93.7
v3.0.0
v2.93.6
v2.93.5
v2.83.18
v2.93.4
v2.93.3
v2.83.17
v2.93.2
v2.93.1
v2.83.16
v2.93.0
v2.83.15
v2.83.14
v2.83.13
v2.92.0
v2.83.12
v2.91.2
v2.83.10
v2.91.0
v2.83.9
v2.83.8
v2.83.7
v2.90.1
v2.83.6.1
v2.83.6
v2.90.0
v2.83.5
v2.83.4
v2.83.3
v2.83.2
v2.83.1
v2.83
v2.82a
v2.82
v2.81a
v2.81
v2.80
v2.80-rc3
v2.80-rc2
v2.80-rc1
v2.79b
v2.79a
v2.79
v2.79-rc2
v2.79-rc1
v2.78c
v2.78b
v2.78a
v2.78
v2.78-rc2
v2.78-rc1
v2.77a
v2.77
v2.77-rc2
v2.77-rc1
v2.76b
v2.76a
v2.76
v2.76-rc3
v2.76-rc2
v2.76-rc1
v2.75a
v2.75
v2.75-rc2
v2.75-rc1
v2.74
v2.74-rc4
v2.74-rc3
v2.74-rc2
v2.74-rc1
v2.73a
v2.73
v2.73-rc1
v2.72b
2.72b
v2.72a
v2.72
v2.72-rc1
v2.71
v2.71-rc2
v2.71-rc1
v2.70a
v2.70
v2.70-rc2
v2.70-rc
v2.66
v2.63
v2.60
v2.59
v2.58a
v2.58
v2.57b
v2.57a
v2.56a
v2.55
v2.45
softbody-stable-v1
softbody-stable-v2
softbody-stable-v3
v2.25
v2.26
v2.27
v2.28
v2.28a
v2.28c
v2.30
v2.31
v2.31a
v2.32
v2.33
v2.33a
v2.34
v2.35
v2.35a
v2.36
v2.37
v2.37a
v2.40
v2.41
v2.42
v2.42a
v2.43
v2.44
v2.46
v2.47
v2.48
v2.48a
v2.49
v2.49a
v2.49b
v2.50
v2.51
v2.52
v2.53
v2.54
v2.56
v2.57
v2.60a
v2.61
v2.63a
v2.64
v2.64a
v2.65
v2.65a
v2.66a
v2.67
v2.67a
v2.67b
v2.68
v2.68a
v2.69
Labels
Apply labels
Clear labels
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 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
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Set Project
Clear projects
No project
Assignees
Assign users
Clear assignees
No Assignees
12 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#68498
Reference in new issue
There is no content yet.
Delete Branch '%!s(<nil>)'
Deleting a branch is permanent. It CANNOT be undone. Continue?
No
Yes
Currently we mix up selection with other actions like activation and mode toggling. This makes it unclear what action(s) will occur when you select something in the outliner. A simple solution is to add a new column on the left of the outliner to activate data and switch object modes. This task has two parts, data activation and mode toggling.
Data Activation(currently on hold)This still has some merit, but needs to be rethought for the design. Mode toggling is working fine.
There are certain types of outliner data that when selected, make a larger change in Blender. These "disruptive" types are Collections, Scenes, and Camera Data. For example, when you select a scene, Blender also switches to that scene:
Not only can you not select a scene without switching to it, it's also hard to even see which one is the active one.
It's impossible to simply select the scene in the Outliner without also switching to it. The same is true for collections and camera data. If you want to select a collection, it always becomes active. This mixing of selection and activation is confusing, and it also makes it unclear which data is active.
Mode Toggling
Since Blender 2.80, edit mode and pose mode support multiple objects in the mode at a time. Currently the outliner supports mode toggle for these types which makes it easy to add or remove objects while in the object mode. However, this feature is hidden, and interferes with selection as mentioned above.
For example, to bring an object into edit mode, the object data must be selected and ctrl must be held to extend the objects in the mode. Obviously that's not acceptable, because:
When not in object mode, icons can be drawn to the left of objects that allow adding and removing from the mode. For modes other than edit and sculpt, these will allow easy switching of the current active object. For example, you can click the sculpt mode icon next to another mesh to swap to sculpt mode on that object. This last example is currently not possible to do in Blender, and would be a useful feature to add.
Progress
The current implementation (in the
soc-2020-outlinerbranch) looks like:We are using radio icons for data activation. In the past we used a dot for inactive, and a checkmark for active. One current issue is that the icons look the same between cameras, scenes, and collections. Using the camera, scene, or collection looks too busy, so more work may be needed here.
Something that we currently do is draw the data activation toggles in the different modes. I think it may look better to hide them when in an object mode.
Also, right now the icons for objects not in the interaction mode are drawn dim. In the past we used a dot, which I might prefer because it shows more clearly the difference. The faded icon lacks contrast.
We could also draw a vertical line to separate this column from the rest of the outliner

Added subscribers: @WilliamReynish, @natecraddock
Added subscriber: @jendrzych
I don't find clear and communicative enough to have an additional column of icons just next to restriction indicators (that can be really crowded already).
I'd dim all data which is not in Edit Mode or change colour of its text and icons to... let's say gray. The point is to make an easy to spot contrast between all the data in and outside the Edit Mode. To visually separate edited data blocks, that an user is focused on at the moment..
The text is already grey. And the purpose is twofold: one, to see what you are editing, and 2, to allow for a way to add or evict other objects to and from the current mode.
We could also display these toggles separately like so:
{F7657229, size=full}
Well, I find Edit Mode as a kind of "local view" of the specific data.

It'd be more clear and elegant to have it this way by my mind:
or like that:

Less cluttered, at least, yet informative enough.
Using bold text and a few percent bigger icons is another elegant way to go.
Thinking of managing modes selection within the Outliner I ask myself a question - do we really need the ObData representation in the Outliner? Is it crucial to visually represent real data structure there? Why do we have to have the Camera Object bold icon with the thin Camera ObData pictogram next to it, even it it serves no purpose? Everything seems to be duplicated - similar shapes of Data and ObData pictograms can be quite confusing at first.
The way Outliner manages data right now makes it really cluttered with information and not easy to read, understand and use. Way too many possibilities and references.
Having in mind the upcoming Otuliner, 3D View Editor and Properties editor synchronization, we may consider further simplification of the Otliner's look and structure. What if we got rid of ObData icons, leaving just the Objects along with other relevant related data blocks (Modifiers, Materials, and so on...)?
The synced Properties Editor will still provide detailed info about ObData of selected Object, but we'd tidy up and simplify the Outliner's window.
The most important thing is, that visualizing and handling changes of the mode via Outliner would become way easier and elegant - the bold orange Object icon would be replaced with the thin green ObData icon. The difference will be clear and noticeable at a glance.
For detailed data structure, we can still use a different Outliner's veiw mode.
I don't find that particularly clear at all. It's not clear why the other items are greyed out. And you haven't addressed the other purpose of this - which is the ability to toggle objects in and out of the mode.
I'm not sure what this means.
The Outliner includes a hierarchy of data, which we absolutely should not remove - it's one of the main points of the Outliner:

@WilliamReynish tell me - how many mesh ObData You can bind to an Object? One. Just one. The relation between Object and its ObData is flat. I'd agree, if it was possible to attach several different ObData blocks of let's say - Mesh, Curve, Lattice to one Object. But it's not like that. The shape of an Object's icon already indicates type of ObData attached to it, isn't it? We duplicate information with no purpose.
It's very important to know which obData data blocks are linked to which objects. We aren't going to remove the ability to see other data in the Outliner
In any case, that's neither here nor there, and has little to do with this topic to begin with.
But You know what ObData is linked to the Object without seing the actual ObData icon - Object with Mesh ObData has bolf triangle icon (ObData = thin triangle icon) and so on.
Added subscriber: @tomjk
I think @jendrzych is suggesting to get rid of the inline datablock icons that appears when the item is folded (orange box in image). You can still see the object hierarchy as normal when expanded, so you can still examine which datablock belongs to which object - but it is a little redundant to tell the user that "this light has a light", "this object has a mesh", "this camera has a camera", etc. which is the only thing that the inline icons do.
Personally I think the current approach of showing all datablock icons is good enough and the reasons to change it, while perfectly sensible, are not compelling (but at this point I'm making the derailing of this thread even worse so I'm going to stop now).
To make some contribution to the actual topic: I prefer the first proposal with the edit mode toggle on the right.
Well @tomjk got the point. We already indicate the kind of ObData linked to an Object with the Object's icon. No need for an extra datablock representation, since it serves no real purpose other than showing real data structure. I guess it's a relic from the past, when all Objects shared one generic Object pictogram and thus there was real need for another icon just to depict kind of linked Object Data. Things changed since then and we already have individual icon for each pair of Object and specific ObData. Two hierarhy levels in one icon. I can't agree that this is irrevelant to this topic. As far as I understand, we're looking for an elegant way to manage modes within Outliner and my considerations are focused on this issue. @WilliamReynish's proposal is easy to implement, but introduces extra information into already crowded space.

My proposal needs more intensive changes, I guess, but results with cleaner UI.

OBJECT MODE (it's still clear what kind of ObData is linked to each of Objects, isn't it?):
EDIT MODE (can You point which data is in Edit Mode now?):


or even better:
O the other hand, @WilliamReynish's way allows for indication of other modes as well - Vertex Paint, Sculpt... It's just a matter of the icon used. What bothers me the most is the fact, that the state isn't underlined enough. It should be emphasized a bit more. Like that, for ex.:

or (the cleanest one, in my opinion):

or even:

Just a few points about why I think the datablocks are good and useful. First: An object's datablock can be changed, so it is useful to display this information (mesh data, light data, camera data, etc) from within the outliner. Second, in my
soc-2019-outlinerbranch I allow selection on the collapsed row icons. This will be very powerful with #63991 (Outliner/Properties syncing). Without even opening the object data, a click on the green mesh data will open the correct tab in the properties editor. Properties syncing has been high on the list of requests for the summer of code, and I wouldn't want to add it and then remove datablocks from the outliner. If someone feels this is too cluttered, we have the "Object Contents" checkbox in the outliner filter popover which hides all datablocks.That all being said, there are lots of icons in the outliner, so I do think it would be nice to find a way to toggle in and out of modes without added clutter. I like @jendrzych's idea of highlighting the objects in edit mode in the outliner. To make it more obvious, we could use the existing row highlights, just with a different color.
To add and remove we could limit outliner selection to only toggle in and out of the mode. This way we could benefit from existing operators (range select, extend selection, box selection) to bring objects in and out of a mode. I also like the idea fading unsupported data elements.
Yes the highlight rows, combined with fading could work well probably, and allow for adding and removing items from the current mode.
When I have time I will update the design task above.
Managing modes from the Outlinerto Outliner: Modes & activating cameras or scenes 4 years agoAdded subscriber: @Harley
Hey, while you guys are playing around in there.... you should consider hiding "hide_viewport" and "hide_select" while an Object is in Edit Mode.
It seems odd to me that we can even toggle Viewport Visibility off while in Edit mode as that just stops the very action you are in. And the Selectability toggle doesn't make a lot of sense while in Edit mode either, as that only affects selection of the object, which we can't do in that mode. You can still select vertices, edges, etc so the toggle seems to do nothing while in Edit Mode.
@Harley One reason I see to keep the visibility toggle for objects in edit mode is because we now allow multiple objects in edit mode. It may be useful to hide objects temporarily while editing.
The selectability toggle could be hidden in edit mode, but I also don't see much harm in keeping it.
@Zachman - we now allow multiple objects in edit mode
Yes of course, I hadn't thought about hiding one object while editing multiples.
Yes, that toggle was less interesting to me. I was mostly excited about the thought of "hide_viewport" because that would give some added difference to the view of that row while in Edit Mode. But without being able to hide that then "hide_select" doesn't matter much.
Oh well, I am occasionally filled full of bad ideas. Especially when short of caffeine. LOL
Besides scenes and cameras I think that we could include activating collections in the left gutter so selecting a collection to rename or move doesn't also activate it. It would also make the active collection more clear (I remember some confusion from users about active collections).
For data like materials I think it is best to keep the activation and selection together. Otherwise with properties syncing the correct material would not be the active material in the properties editor.
I also think the new column would need to be drawn on top of the tree so scrolling horizontally would not hide the toggles.
Now that I have finished my GSoC final report, I'd be happy to start working on this.
It depends what you mean by ‘activation’. It’s a little confusing because we have active objects which should be set via normal selection, but also active scene and camera, which should not be set via a normal selection.
Sorry, I meant activation of UI list data. Materials, Grease Pencil Layers, Vertex groups, etc. I am trying to see how this will work with properties syncing. If I wanted to edit a specific material, I would think clicking the material name would open the proper tab in the properties editor, with the selected material active.
But if we allow that behavior, I can see it being confusing to select a scene (on the name) and expect to edit the scene's data in the properties editor. But if the active scene was not changed (by clicking in the gutter), the wrong scene's data would be shown.
So perhaps clicking on the material name would switch to the materials tab, and then materials could also have an active check in the gutter for consistency.
@Zachman IMO it's probably ok if selecting a material normally in the Outliner makes that material the active one.
The exceptions are the things that are disruptive, such as changing scenes or active cameras. Those things should not change by simply selecting them in the Outliner.
@WilliamReynish That's fine and will work well I think.
Another thing that will be improved by fixing mode toggling and activation is walk navigation. Currently walk navigation only selects to prevent mode toggling while walking. It would be much more convenient and expected to move the active element on walk navigation (allowing faster renaming without taking hands off keyboard for example).
@Zachman Yes, that improvement to walk selection in itself would be a huge bonus.
Added subscriber: @DuarteRamos
Added subscriber: @Cedch
I am currently working on implementing the left column and buttons for this task. I have already separated this behavior from selection of datablocks. For data activation, this is relatively straightforward, but mode toggling needs some thought and decisions:
With this column being optional, all the features should be accessible from the context menu, i.e. right click on a collection to set as active collection. The context menu has options already for mode toggle, but they are very broken. With good code design, adding a context menu for mode toggle should be straightforward once the column is finished.
We should support more than only edit mode toggling. The outliner object data already supports edit mode toggle, and we also allow pose mode toggle for armatures. At the very least this behavior should be preserved, but supporting sculpt, texture paint, etc. would also be very useful because not every user does mesh editing/animating. For example, let's say we want to add support for sculpt mode toggle. When the active object is already in sculpt mode, it is easy to show an icon to toggle sculpt for supported objects.
But if we want to allow entering any interaction mode from the outliner, this becomes more complex. The first click on the button could create a menu to choose which mode to enter, then once in any mode that isn't object mode, the buttons are used
Another main goal of this design is to make it easier to add and remove objects from an interaction mode. When in any mode other than object mode, clicking the mode toggle button of a non-active datablock would bring it into that mode, and to end the interaction mode, the active object can be toggled.
This column will show in the View Layer display mode, should it also be visible in Scenes view mode? I don't think any other outliner view modes would make sense to support this column.
Which level should the icons show on? For most objects this is simple, it could show on the same level as the object itself. For armatures this is more complex because we have the Armature and Pose sub-datablocks that are currently used for mode toggling.

Finally, this column needs a simple name to be used from the UI (for the checkbox to disable).
If I understand correctly, from the description it seems you plan to make this mode toggling work on multiple selected objects at once.
Maybe the code handling selection could be made generic enough to be extended to other features of the Outliner.
Main candidates I was thinking was visibility/renderability toggles, so pressing the eye icon would toggle all selected objects, rather than just the clicked one.
Visibility toggling isn't even that much of a problem because most of the time one can just click-drag over a bunch of icons, if they are all in sequence. The most desirable use-case for this would be for keyframing visibility/renderability properties.
Since those can't be performed in the viewport and currently doing so from the outliner only affects a single object at a time, animating visibility for lots of objects is chore. Being able to keyframe visibility for all multiple objects at once in the outliner would be a very desirable quality of life improvement.
I've enabled the column in the View Layer and Scenes view so far. The View Layer mode already has a left column because it includes the space for an expand/collapse toggle) but it isn't shown. I think having two left columns looks silly (see picture) so I think the best plan is to leave the normal column, then shift the tree to the left when the toggle/activate column is disabled.
The only use for the existing left column in view layers mode currently is selection, but there is plenty of other space to select or start a box selection so I think this decision will be fine.
@DuarteRamos I actually had not made plans to include the current selection when toggling modes. The idea is the icons will show and you can toggle the modes by clicking (also click+drag). It's good to consider that as a possibility though.
I have finished the first pass of implementation in the
soc-2020-outlinerbranch. Currently the data activation icons draw in object mode, and the edit mode toggles only draw once the active object has been brought into edit mode. See the video for the current behaviorleft_column_demo.mp4
I decided to only draw the mode toggles when not in object mode to reduce visual clutter. I think this decision is for the best. I think users will rarely want to enter a mode from the outliner, but the outliner can be used to add and remove objects from edit mode easily once in the mode. Additionally, it didn't make sense to draw the collection/scene/camera toggles in edit mode.
The video shows one current limitation. The active object stores the edit "session" in a sense. Once the active object is brought out of edit mode, all other objects in edit mode are also toggled back to object mode. While technically possible to choose a different active object and leave the remaining objects in edit mode, this doesn't align with the current design in Blender; active objects are never chosen arbitrarily.
Added subscriber: @Imaginer
@Zachman Interesting video, however I find it to be a bit visually confusing and inconsistent. I know it's still early days, but here are a couple of thoughts.
In object mode, there is nothing to differentiate between the active collection and the active camera, and depending on the scene setup these icons could be very far away from their collection/camera (even at this distance I find it difficult to discern what the icons are referring to because when focusing on the new icons the rest of the information is outside of your visual focus).
In edit mode, all of the object mode data disappears which is visually jarring. And I know you're still working on mode toggling, but it feels disjointed that you can only toggle edit mode when in edit mode, and because of the distance between the new icons and their objects I think it could be hard to quickly find which belongs to what in more complex scenes. I do like that when you're in edit mode only the icons for objects that can be added to it are shown. Maybe if you greyed out the active icons when in edit mode rather than removing them it would help it to be less visually jarring?
Hopefully this helps!
Added subscribers: @ideasman42, @brecht
@Imaginer thanks for the feedback! It has been proposed to use camera/scene/collection icons for the active data toggle, but that repeats the same icon in the row too many times. We are trying alternatives right now. I definitely could be doing some dimming of the active data icons in edit mode though.
@ideasman42 @brecht I was talking with @WilliamReynish about the mode toggling in this column (and in the outliner currently). It's easy to use the outliner to add and remove objects from the current multi-object edit mode with one exception. When removing the active object from edit mode all the other objects are removed. Of course, this makes sense because the current design relies on the active object in edit mode. William and I were thinking about possibly choosing a new active from the current objects in edit mode when the active is removed from edit mode. Picking an arbitrary active object isn't (ever?) done in Blender, so that is why I'm asking you about your thoughts on this.
On one hand, its easy enough to select a new active object from the outliner while in edit mode, then remove the old active. But in the limited feedback from users on my branch, some are already confused why toggling the active removes all from edit mode.
Outliner: Modes & activating cameras or scenesto Outliner: Mode toggling & activating data 3 years agoI updated the original description with more details and examples of the current implementation. This part of the project is nearly finished besides some small edge-cases and UI decisions.
Added subscriber: @myway880
Maybe this is too early to think about or out of scope
but just in case it's relevant , the keymesh idea That are being developed by Pablo, does it need any special care during your design? From what I understand keymeshs are multiple meshes under the same object? How will that appear in the outliner?
I think this is the first time I've seen this design with the new left column, and to be honest I don't think decoupling data activation from selection like this is something we should do at all. The way it works now is consistent with the 3D viewport, and as far as I know also more consistent with the way activation works in other applications. The additional column of icons also clutters the outliner even more.
What is the opinion of other UI team members on this?
Personally, my opinion is that mode toggling should not happen in the outliner, only in the 3D viewport. That's where it really matters, outliner display and available operations do not change much depending on the mode.
If we must have a way of toggling nodes in the outliner, then changing the active object along with it seems reasonable to me.
@brecht thank you for taking a look at this. I'll discuss your points with William tomorrow when we meet. If for whatever reason this specific project isn't acceptable, I have many other tasks that I can continue for GSoC.
There has been at least some UI team discussion; @WilliamReynish @ideasman42 and I first planned this back in August last year, and William and I are discussing this design currently for my project. Mode toggling from the outliner has also been mentioned recently https://developer.blender.org/D7510#180495.
First, not all activation is being separated, only for a few types. In my opinion, the camera, collection, and scene activation isn't completely necessary from the column, but the mode toggling is both useful and needed. Currently the outliner can toggle edit mode and pose mode. This is very helpful when in those modes because you can't easily add or remove objects while in the mode. The outliner makes it easy to see what is in the mode, and allows adding or removing objects. I just extended this to work for all modes, and from the column. This frees up the data items in the outliner to toggle properties editor tabs (another part of my GSoC project).
@Zachman, if Campbell also agrees on this design I'll go along with it.
I thought object activation was also done this way, but if it's just the camera, collection and scene that is better. Still not entirely sure about the collection case though.
Personally for the modes I would expect that if a mesh object is in edit mode, and you select an additional mesh object in the outliner, that other object would automatically also go into edit mode. But I can also see how that's problematic if for example you do select all, so maybe it does have to be more explicit.
Added subscriber: @slowk1d
Outliner: Mode toggling & activating datato Outliner: Mode Toggling 3 years agoI'm not keen on the behavior of picking a new active object for the user (when exiting edit-mode for example). I'd like to know if there is a an advantage that makes this worthwhile since it will change other things (nodes, material preview etc) in a way users will find jarring - depending on the situation.
Exiting all objects-edit mode is a quirk too, but one that's predictable, with D8641 at least, if you toggle the mode of an object, it sets another object active and leaves it active. I don't think there is a good general solution for this as setting the object active that's added to the mode also isn't ideal.
Bigger picture, I'd like to know if experienced users are often using the outliner for mode toggling, since this design dedicates a column, making it much more prominent.
Brecht mentioned in #user-interface-module
We could leave outliner mode switching working on a basic level (adding the mode-column without other changes to active object setting), and see if we can come up with a good design to perform mode switching in the 3D view, since I think users are more likely to see the contents in 3D which they want to enable.
Added subscriber: @PabloDobarro
I think that exiting the mode when toggling the active object is acceptable. It's also consistent with the current master behavior. @WilliamReynish really wanted the active object to change instead, and I agree that changing the active is a better behavior in many ways; however, the issues with undo and "jarring" activation are reasons to avoid changing the active.
I am fine with this plan. I know that @PabloDobarro was workikng on a viewport-oriented mode toggling feature for sculpt mode in D7510. In the long term it would be nice to support mode toggle in the viewport for all modes.
Changed status from 'Confirmed' to: 'Resolved'
Committed in
2110af20f5