[Bf-extensions-cvs] [b41072e] master: Mesh edit tools: Fix error unregistering addong

Sergey Sharybin noreply at git.blender.org
Fri Apr 7 15:51:42 CEST 2017


Commit: b41072ec3a0baf30885876ff9a7c6f337b126af3
Author: Sergey Sharybin
Date:   Fri Apr 7 15:51:14 2017 +0200
Branches: master
https://developer.blender.org/rBAb41072ec3a0baf30885876ff9a7c6f337b126af3

Mesh edit tools: Fix error unregistering addong

===================================================================

M	mesh_extra_tools/mesh_pen_tool.py
M	mesh_extra_tools/vertex_align.py
M	mesh_extra_tools/vfe_specials.py

===================================================================

diff --git a/mesh_extra_tools/mesh_pen_tool.py b/mesh_extra_tools/mesh_pen_tool.py
index ebe5ae8..59bdded 100644
--- a/mesh_extra_tools/mesh_pen_tool.py
+++ b/mesh_extra_tools/mesh_pen_tool.py
@@ -522,6 +522,9 @@ class_list = [pen_tool_panel,
              ]
 
 
+addon_keymaps = []
+
+
 def register():
     for c in class_list:
         bpy.utils.register_class(c)
@@ -529,24 +532,25 @@ def register():
     bpy.types.Scene.pen_tool_props = PointerProperty(type=pen_tool_properties)
 
     wm = bpy.context.window_manager
-    km = wm.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
+    km = wm.keyconfigs.addon.keymaps.new(name='3D View X', space_type='VIEW_3D')
 
     # Note: left click + D key is reserved for Grease Pencil draw
     kmi = km.keymap_items.new("pen_tool.operator", 'D', 'PRESS', ctrl=True)
+    addon_keymaps.append((km, kmi))
 
 
 def unregister():
-    for c in class_list:
-        bpy.utils.unregister_class(c)
+    wm = bpy.context.window_manager
+    kc = wm.keyconfigs.addon
+    if kc:
+        for km, kmi in addon_keymaps:
+            km.keymap_items.remove(kmi)
+    addon_keymaps.clear()
 
     del bpy.types.Scene.pen_tool_props
 
-    wm = bpy.context.window_manager
-    km = wm.keyconfigs.addon.keymaps['3D View']
-    for kmi in km.keymap_items:
-        if kmi.idname == 'pen_tool.operator':
-            km.keymap_items.remove(kmi)
-            break
+    for c in class_list:
+        bpy.utils.unregister_class(c)
 
 
 if __name__ == "__main__":
diff --git a/mesh_extra_tools/vertex_align.py b/mesh_extra_tools/vertex_align.py
index d3b5ace..8b3be88 100644
--- a/mesh_extra_tools/vertex_align.py
+++ b/mesh_extra_tools/vertex_align.py
@@ -286,11 +286,11 @@ def register():
 
 # ------ ------
 def unregister():
+    del bpy.types.Scene.va_custom_props
+
     for c in classes:
         bpy.utils.unregister_class(c)
 
-    bpy.ops.wm.properties_remove(data_path="scene", property="va_custom_props")
-
 # ------ ------
 if __name__ == "__main__":
     register()
diff --git a/mesh_extra_tools/vfe_specials.py b/mesh_extra_tools/vfe_specials.py
index 4a3e151..fef6679 100644
--- a/mesh_extra_tools/vfe_specials.py
+++ b/mesh_extra_tools/vfe_specials.py
@@ -71,23 +71,23 @@ def register():
         bpy.utils.register_class(cls)
 
     wm = bpy.context.window_manager
-    km = wm.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
-    kmi = km.keymap_items.new('mesh.addon_call_context_menu', 'RIGHTMOUSE', 'DOUBLE_CLICK')
+    if wm.keyconfigs.addon:
+        km = wm.keyconfigs.addon.keymaps.new(name='3D View X', space_type='VIEW_3D')
+        kmi = km.keymap_items.new('mesh.addon_call_context_menu', 'RIGHTMOUSE', 'DOUBLE_CLICK')
+        addon_keymaps.append((km, kmi))
 
 
 def unregister():
+    wm = bpy.context.window_manager
+    kc = wm.keyconfigs.addon
+    if kc:
+        for km, kmi in addon_keymaps:
+            km.keymap_items.remove(kmi)
+    addon_keymaps.clear()
+
     for cls in classes:
         bpy.utils.unregister_class(cls)
 
-    wm = bpy.context.window_manager
-
-    # remove multiselect keybinding
-    km = wm.keyconfigs.addon.keymaps['3D View']
-    for kmi in km.keymap_items:
-        if kmi.idname == 'wm.call_menu':
-            if kmi.properties.name == "mesh.addon_call_context_menu":
-                km.keymap_items.remove(kmi)
-                break
 
 
 if __name__ == "__main__":



More information about the Bf-extensions-cvs mailing list