diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-01-22 09:31:04 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-01-22 10:43:00 +0300 |
commit | 3a9d43cf31da4f322c0789329b249c041ad1e3d7 (patch) | |
tree | ffe3b1c95cdcdb62ab1d97300bb217756e56e1da /source/blender/editors/object/object_edit.c | |
parent | ee5a4f41eb487c455337579643826d14326a4171 (diff) |
Fix outliner and animation editors exiting multi-object edit-mode
When multiple objects were in edit-mode,
only the active object would exit edit-mode.
Diffstat (limited to 'source/blender/editors/object/object_edit.c')
-rw-r--r-- | source/blender/editors/object/object_edit.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 41886dd1dcd..4cf49d262ca 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -683,6 +683,32 @@ bool ED_object_editmode_exit(bContext *C, int flag) return ED_object_editmode_exit_ex(bmain, scene, obedit, flag); } +bool ED_object_editmode_exit_multi_ex(Main *bmain, Scene *scene, ViewLayer *view_layer, int flag) +{ + Object *obedit = OBEDIT_FROM_VIEW_LAYER(view_layer); + if (obedit == NULL) { + return false; + } + bool changed = false; + const short obedit_type = obedit->type; + + LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) { + Object *ob = base->object; + if ((ob->type == obedit_type) && (ob->mode & OB_MODE_EDIT)) { + changed |= ED_object_editmode_exit_ex(bmain, scene, base->object, flag); + } + } + return changed; +} + +bool ED_object_editmode_exit_multi(bContext *C, int flag) +{ + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + ViewLayer *view_layer = CTX_data_view_layer(C); + return ED_object_editmode_exit_multi_ex(bmain, scene, view_layer, flag); +} + bool ED_object_editmode_enter_ex(Main *bmain, Scene *scene, Object *ob, int flag) { bool ok = false; |