Commit: e5c13aebea6bb884ad4d54b338152c1867026fa0
Author: Bastien Montagne
Date:   Sun Oct 26 10:01:03 2014 +0100
Branches: master
https://developer.blender.org/rBe5c13aebea6bb884ad4d54b338152c1867026fa0

Fix T42372: demo addon in doc was not handling keymaps correctly during 
(un)registration.

First, you should unregister in reverse order you registered your operators, 
keymaps, etc.
Second, when registering keymaps you have to check keyconfigs are actually 
available (they are not in background mode).

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

M       doc/python_api/rst/info_tutorial_addon.rst

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

diff --git a/doc/python_api/rst/info_tutorial_addon.rst 
b/doc/python_api/rst/info_tutorial_addon.rst
index 5637cf2..436f74b 100644
--- a/doc/python_api/rst/info_tutorial_addon.rst
+++ b/doc/python_api/rst/info_tutorial_addon.rst
@@ -563,20 +563,26 @@ Bringing it all together
 
        # handle the keymap
        wm = bpy.context.window_manager
-       km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', 
space_type='EMPTY')
-       kmi = km.keymap_items.new(ObjectCursorArray.bl_idname, 'SPACE', 
'PRESS', ctrl=True, shift=True)
-       kmi.properties.total = 4
-       addon_keymaps.append((km, kmi))
+       # Note that in background mode (no GUI available), keyconfigs are not 
available either, so we have to check this
+       # to avoid nasty errors in background case.
+       kc = wm.keyconfigs.addon
+       if kc:
+           km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', 
space_type='EMPTY')
+           kmi = km.keymap_items.new(ObjectCursorArray.bl_idname, 'SPACE', 
'PRESS', ctrl=True, shift=True)
+           kmi.properties.total = 4
+           addon_keymaps.append((km, kmi))
 
    def unregister():
-       bpy.utils.unregister_class(ObjectCursorArray)
-       bpy.types.VIEW3D_MT_object.remove(menu_func)
-
+       # Note: when unregistering, it's usually good practice to do it in 
reverse order you registered.
+       # Can avoid strange issues like keymap still referring to operators 
already unregistered...
        # handle the keymap
        for km, kmi in addon_keymaps:
            km.keymap_items.remove(kmi)
        addon_keymaps.clear()
 
+       bpy.utils.unregister_class(ObjectCursorArray)
+       bpy.types.VIEW3D_MT_object.remove(menu_func)
+
 
    if __name__ == "__main__":
        register()

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to