[Bf-extensions-cvs] [39780841] master: Add-ons: remove temporary disabling of use_global_undo

Brecht Van Lommel noreply at git.blender.org
Wed May 22 11:33:13 CEST 2019

Commit: 39780841434444cbc9af51b34270713a09f937d9
Author: Brecht Van Lommel
Date:   Wed May 22 11:31:03 2019 +0200
Branches: master

Add-ons: remove temporary disabling of use_global_undo

This can cause bugs where if the operator throws an exception, undo is not
properly enabled again. There have been maybe a dozen Blender bug reports
related to this. This could get worse now that we are autosaving preferences.

Some add-ons guard against this, but turning off undo should not be needed in
the first place. If the operator is set to do an undo push, any operators it
calls will automatically not do any undo pushes.

If this fail in some cases, it should be reported as a bug in Blender. I could
not find issues or a performance impact testing a few add-ons though.

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


M	add_advanced_objects_menu/make_struts.py
M	add_dimension.py


diff --git a/add_advanced_objects_menu/make_struts.py b/add_advanced_objects_menu/make_struts.py
index 547fb2f5..f9eda055 100644
--- a/add_advanced_objects_menu/make_struts.py
+++ b/add_advanced_objects_menu/make_struts.py
@@ -562,18 +562,14 @@ class Struts(Operator):
         return obj is not None and obj.type == "MESH"
     def execute(self, context):
-        store_undo = bpy.context.preferences.edit.use_global_undo
-        bpy.context.preferences.edit.use_global_undo = False
         keywords = self.as_keywords()
             create_struts(self, context, **keywords)
-            bpy.context.preferences.edit.use_global_undo = store_undo
             return {"FINISHED"}
         except Exception as e:
-            bpy.context.preferences.edit.use_global_undo = store_undo
                         "Make Struts could not be performed. Operation Cancelled")
diff --git a/add_dimension.py b/add_dimension.py
index b716584f..e459a70e 100644
--- a/add_dimension.py
+++ b/add_dimension.py
@@ -2655,17 +2655,10 @@ class Dimension(bpy.types.Operator):
             bpy.ops.object.mode_set(mode = 'OBJECT')
-        # turn off undo
-        undo = bpy.context.preferences.edit.use_global_undo
-        bpy.context.preferences.edit.use_global_undo = False
         # main function
         self.align_matrix = align_matrix(context, self.Dimension_startlocation)
         main(self, self.align_matrix)
-        # restore pre operator undo state
-        bpy.context.preferences.edit.use_global_undo = undo
         return {'FINISHED'}
     ##### INVOKE #####

More information about the Bf-extensions-cvs mailing list