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
This commit is contained in:
parent
cde7574c05
commit
73976fd55a
Notes:
blender-bot
2023-02-13 20:24:59 +01:00
Referenced by issue blender/blender#83099, heap-use-after-free in script_load_addons test
|
@ -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",
|
||||
|
|
|
@ -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 ---
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue