Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2021-01-22 09:31:04 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-01-22 10:43:00 +0300
commit3a9d43cf31da4f322c0789329b249c041ad1e3d7 (patch)
treeffe3b1c95cdcdb62ab1d97300bb217756e56e1da /source/blender/editors/object/object_edit.c
parentee5a4f41eb487c455337579643826d14326a4171 (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.c26
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;