From 73976fd55a45d48b8e86c163375f26d5c5a7be68 Mon Sep 17 00:00:00 2001 From: Robert Guetzkow Date: Tue, 1 Dec 2020 10:24:10 +0100 Subject: 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 --- greasepencil_tools/__init__.py | 4 ++-- greasepencil_tools/box_deform.py | 7 +++---- greasepencil_tools/prefs.py | 13 +++++-------- 3 files changed, 10 insertions(+), 14 deletions(-) (limited to 'greasepencil_tools') 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() -- cgit v1.2.3