Fix T73675: Leaving exit mode tags all objects for update
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 11 Feb 2020 09:12:43 +0000 (10:12 +0100)
committerSergey Sharybin <sergey.vfx@gmail.com>
Tue, 11 Feb 2020 13:04:13 +0000 (14:04 +0100)
This is an oversight of a fix for T69834, where I didn't realize the
ED_object_editmode_exit_ex() function is called for all objects as an
opposite of only the ones which were in edit mode.

Seems a simple fix: just move tag into a check that object was in the
edit mode prior to tag.

Differential Revision: https://developer.blender.org/D6808

source/blender/editors/object/object_edit.c

index 098a4c65ae0fbd5c70701c8e49ec81a6bf310159..1c0ce423c4d9203c94c35ee1ecea08f67ffdd458 100644 (file)
@@ -543,9 +543,9 @@ bool ED_object_editmode_exit_ex(Main *bmain, Scene *scene, Object *obedit, int f
      * is flagged for editmode, without 'obedit' being set [#35489] */
     if (UNLIKELY(obedit && obedit->mode & OB_MODE_EDIT)) {
       obedit->mode &= ~OB_MODE_EDIT;
+      /* Also happens when mesh is shared across multiple objects. [#T69834] */
+      DEG_id_tag_update(&obedit->id, ID_RECALC_TRANSFORM | ID_RECALC_GEOMETRY);
     }
-    /* Also happens when mesh is shared across multiple objects. [#T69834] */
-    DEG_id_tag_update(&obedit->id, ID_RECALC_TRANSFORM | ID_RECALC_GEOMETRY);
     return true;
   }