diff options
author | Nathan Craddock <nzcraddock@gmail.com> | 2020-09-10 17:35:58 +0300 |
---|---|---|
committer | Nathan Craddock <nzcraddock@gmail.com> | 2020-09-10 18:01:27 +0300 |
commit | 2110af20f5e636cd4481152e8cbe920dfa1efa8c (patch) | |
tree | e8b005723d97306876d23e17ab7048960bc11b81 /source/blender/editors/interface/interface_icons.c | |
parent | 0649e6371629507c201310f7ece628a926d846d5 (diff) |
Outliner: Move mode toggling to left column
Add a column of icons in the left gutter of the outliner for controlling
the interaction modes of objects. When an object is in a mode other than
object mode, the mode icon will draw to the left of that object. Any
other objects that are valid to be added or swapped into the mode are
drawn with a dot to the left of the object.
Clicking the dot to the left of an object will swap that object with the
current active object in the interaction mode. For edit and pose modes,
ctrl clicking the dot will add that object to the current mode.
Clicking the mode icon next to the active object removes it and all
other objects from the current mode.
The behavior is nearly identical to the previous edit/pose mode toggling
by selecting the mesh and armature datablocks, with additional support
for all interaction modes.
Currently two undo steps are pushed to prevent an assert.
Part of T77408
Manifest Task: https://developer.blender.org/T68498
Differential Revision: https://developer.blender.org/D8641
Diffstat (limited to 'source/blender/editors/interface/interface_icons.c')
-rw-r--r-- | source/blender/editors/interface/interface_icons.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index b5f902adfb5..c91b4d826a7 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -2294,6 +2294,36 @@ int UI_idcode_icon_get(const int idcode) } } +int UI_mode_icon_get(const int mode) +{ + switch (mode) { + case OB_MODE_OBJECT: + return ICON_OBJECT_DATAMODE; + case OB_MODE_EDIT: + case OB_MODE_EDIT_GPENCIL: + return ICON_EDITMODE_HLT; + case OB_MODE_SCULPT: + case OB_MODE_SCULPT_GPENCIL: + return ICON_SCULPTMODE_HLT; + case OB_MODE_VERTEX_PAINT: + case OB_MODE_VERTEX_GPENCIL: + return ICON_VPAINT_HLT; + case OB_MODE_WEIGHT_PAINT: + case OB_MODE_WEIGHT_GPENCIL: + return ICON_WPAINT_HLT; + case OB_MODE_TEXTURE_PAINT: + return ICON_TPAINT_HLT; + case OB_MODE_PARTICLE_EDIT: + return ICON_PARTICLEMODE; + case OB_MODE_POSE: + return ICON_POSE_HLT; + case OB_MODE_PAINT_GPENCIL: + return ICON_GREASEPENCIL; + default: + return ICON_NONE; + } +} + /* draws icon with dpi scale factor */ void UI_icon_draw(float x, float y, int icon_id) { |