From 07c0aac78a44336947bcc4b8ef520c1f0d00aafc Mon Sep 17 00:00:00 2001
From: Bastien Montagne <montagne29@wanadoo.fr>
Date: Tue, 29 Nov 2016 20:47:04 +0100
Subject: [PATCH] Fix more (un)registering issues in view3d_copy_attribute
 addon...

---
 space_view3d_copy_attributes.py | 40 +++++++++++++++++----------------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/space_view3d_copy_attributes.py b/space_view3d_copy_attributes.py
index 5461002d0..d171d2c27 100644
--- a/space_view3d_copy_attributes.py
+++ b/space_view3d_copy_attributes.py
@@ -788,8 +788,6 @@ def register():
         else:
             kmi = km.keymap_items.new('wm.call_menu', 'C', 'PRESS', ctrl=True)
         kmi.properties.name = 'VIEW3D_MT_posecopypopup'
-        for menu in _layer_menus:
-            bpy.utils.register_class(menu)
 
         km = kc.keymaps.new(name="Mesh")
         kmi = km.keymap_items.new('wm.call_menu', 'C', 'PRESS')
@@ -801,23 +799,27 @@ def unregister():
     # mostly to remove the keymap
     kc = bpy.context.window_manager.keyconfigs.addon
     if kc:
-        kms = kc.keymaps['Pose']
-        for item in kms.keymap_items:
-            if item.name == 'Call Menu' and item.idname == 'wm.call_menu' and \
-               item.properties.name == 'VIEW3D_MT_posecopypopup':
-                item.idname = 'pose.copy'
-                break
-        km = kc.keymaps['Mesh']
-        for kmi in km.keymap_items:
-            if kmi.idname == 'wm.call_menu':
-                if kmi.properties.name == 'MESH_MT_CopyFaceSettings':
-                    km.keymap_items.remove(kmi)
-
-        km = kc.keymaps['Object Mode']
-        for kmi in km.keymap_items:
-            if kmi.idname == 'wm.call_menu':
-                if kmi.properties.name == 'VIEW3D_MT_copypopup':
-                    km.keymap_items.remove(kmi)
+        kms = kc.keymaps.get('Pose')
+        if kms is not None:
+            for item in kms.keymap_items:
+                if item.name == 'Call Menu' and item.idname == 'wm.call_menu' and \
+                   item.properties.name == 'VIEW3D_MT_posecopypopup':
+                    item.idname = 'pose.copy'
+                    break
+
+        km = kc.keymaps.get('Mesh')
+        if km is not None:
+            for kmi in km.keymap_items:
+                if kmi.idname == 'wm.call_menu':
+                    if kmi.properties.name == 'MESH_MT_CopyFaceSettings':
+                        km.keymap_items.remove(kmi)
+
+        km = kc.keymaps.get('Object Mode')
+        if km is not None:
+            for kmi in km.keymap_items:
+                if kmi.idname == 'wm.call_menu':
+                    if kmi.properties.name == 'VIEW3D_MT_copypopup':
+                        km.keymap_items.remove(kmi)
 
     bpy.utils.unregister_module(__name__)
 
-- 
GitLab