[Bf-extensions-cvs] [73976fd5] master: Fix T83099: Greasepencil add-on keymap item removal

Robert Guetzkow noreply at git.blender.org
Tue Dec 1 10:31:30 CET 2020


Commit: 73976fd55a45d48b8e86c163375f26d5c5a7be68
Author: Robert Guetzkow
Date:   Tue Dec 1 10:24:10 2020 +0100
Branches: master
https://developer.blender.org/rBA73976fd55a45d48b8e86c163375f26d5c5a7be68

Fix T83099: Greasepencil add-on keymap item removal

The greasepencil add-on removed keymap items it hadn't created
itself, thus invalidating references that other add-ons held for
the keymap items they've created. This is fixed by storing a
reference to the created keymap items alongside the keymap and
only removing those items that the add-on created itself.
Additionally, this commit fixes the doc string that was no
longer valid.

Reviewed By: mont29

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

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

M	greasepencil_tools/__init__.py
M	greasepencil_tools/box_deform.py
M	greasepencil_tools/prefs.py

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

diff --git a/greasepencil_tools/__init__.py b/greasepencil_tools/__init__.py
index 6891ccb9..02e93c61 100644
--- a/greasepencil_tools/__init__.py
+++ b/greasepencil_tools/__init__.py
@@ -21,11 +21,11 @@ bl_info = {
 "name": "Grease Pencil Tools",
 "description": "Extra tools for Grease Pencil",
 "author": "Samuel Bernou, Antonio Vazquez, Daniel Martinez Lara, Matias Mendiola",
-"version": (1, 1, 5),
+"version": (1, 1, 6),
 "blender": (2, 91, 0),
 "location": "Sidebar > Grease Pencil > Grease Pencil Tools",
 "warning": "",
-"doc_url": "https://docs.blender.org/manual/en/dev/addons/object/grease_pencil_tools.html",
+"doc_url": "{BLENDER_MANUAL_URL}/addons/object/greasepencil_tools.html",
 "tracker_url": "https://github.com/Pullusb/greasepencil-addon/issues",
 "category": "Object",
 "support": "COMMUNITY",
diff --git a/greasepencil_tools/box_deform.py b/greasepencil_tools/box_deform.py
index 6354f019..1f6d3abf 100644
--- a/greasepencil_tools/box_deform.py
+++ b/greasepencil_tools/box_deform.py
@@ -557,12 +557,11 @@ def register_keymaps():
     km = addon.keymaps.new(name = "Grease Pencil", space_type = "EMPTY", region_type='WINDOW')
     kmi = km.keymap_items.new("gp.latticedeform", type ='T', value = "PRESS", ctrl = True)
     kmi.repeat = False
-    addon_keymaps.append(km)
+    addon_keymaps.append((km, kmi))
 
 def unregister_keymaps():
-    for km in addon_keymaps:
-        for kmi in km.keymap_items:
-            km.keymap_items.remove(kmi)
+    for km, kmi in addon_keymaps:
+        km.keymap_items.remove(kmi)
     addon_keymaps.clear()
 
 ### --- REGISTER ---
diff --git a/greasepencil_tools/prefs.py b/greasepencil_tools/prefs.py
index 4c146220..1475e95c 100644
--- a/greasepencil_tools/prefs.py
+++ b/greasepencil_tools/prefs.py
@@ -218,21 +218,18 @@ def register_keymaps():
         return
     addon = bpy.context.window_manager.keyconfigs.addon
 
-    km = bpy.context.window_manager.keyconfigs.addon.keymaps.get("3D View")
-    if not km:
-        km = addon.keymaps.new(name = "3D View", space_type = "VIEW_3D")
-    
+    km = addon.keymaps.new(name = "3D View", space_type = "VIEW_3D")
+
     if 'view3d.rotate_canvas' not in km.keymap_items:
         km = addon.keymaps.new(name='3D View', space_type='VIEW_3D')
         kmi = km.keymap_items.new('view3d.rotate_canvas',
         type=pref.mouse_click, value="PRESS", alt=pref.use_alt, ctrl=pref.use_ctrl, shift=pref.use_shift, any=False)
 
-        addon_keymaps.append(km)
+        addon_keymaps.append((km, kmi))
 
 def unregister_keymaps():
-    for km in addon_keymaps:
-        for kmi in km.keymap_items:
-            km.keymap_items.remove(kmi)
+    for km, kmi in addon_keymaps:
+        km.keymap_items.remove(kmi)
     addon_keymaps.clear()



More information about the Bf-extensions-cvs mailing list