Python API: Tag for update on object.update_from_editmode()
authorSergey Sharybin <sergey.vfx@gmail.com>
Mon, 27 May 2019 09:29:22 +0000 (11:29 +0200)
committerSergey Sharybin <sergey.vfx@gmail.com>
Mon, 27 May 2019 09:29:22 +0000 (11:29 +0200)
This call modifies geometry but does not inform anyone about
changes.

After this change it's possible to load edit mesh, then request
evaluated dependency graph and do some interesting things with
the updated object.

This is part of T63244: object.to_mesh ignores object.update_from_editmode

source/blender/makesrna/intern/rna_object_api.c

index b5f515277ca8c80e0e63d5cbb256df6c04b0d569..f5c83df0f450aa3fdaee3c053e2309caa3f1b75c 100644 (file)
@@ -706,7 +706,13 @@ void rna_Object_me_eval_info(
 static bool rna_Object_update_from_editmode(Object *ob, Main *bmain)
 {
   /* fail gracefully if we aren't in edit-mode. */
-  return ED_object_editmode_load(bmain, ob);
+  const bool result = ED_object_editmode_load(bmain, ob);
+  if (result) {
+    /* Loading edit mesh to mesh changes geometry, and scripts might expect it to be properly
+     * informed about changes. */
+    DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY);
+  }
+  return result;
 }
 #else /* RNA_RUNTIME */