Tool System: store keymap name in tool instead of the keymap

Resetting keymaps caused them to become invalid (crashing on access).
This commit is contained in:
2018-11-22 10:23:40 +11:00
parent 4fa693f627
commit f44a8bd257

View File

@@ -306,7 +306,7 @@ class ToolSelectPanelHelper:
if km is None:
km = kc.keymaps.new(km_idname, space_type=cls.bl_space_type, region_type='WINDOW', tool=True)
keymap_fn[0](km)
keymap_fn[0] = km
keymap_fn[0] = km.name
# Special internal function, gives use items that contain keymaps.
@staticmethod
@@ -354,9 +354,9 @@ class ToolSelectPanelHelper:
for context_mode_test, tools in cls.tools_all():
if context_mode_test == context_mode:
for item in cls._tools_flatten_with_keymap(tools):
km = item.keymap[0]
km_name = item.keymap[0]
# print((km.name, cls.bl_space_type, 'WINDOW', []))
yield (km.name, cls.bl_space_type, 'WINDOW', [])
yield (km_name, cls.bl_space_type, 'WINDOW', [])
# -------------------------------------------------------------------------
# Layout Generators
@@ -604,7 +604,7 @@ def _activate_by_item(context, space_type, item, index):
tool = ToolSelectPanelHelper._tool_active_from_context(context, space_type, create=True)
tool.setup(
name=item.text,
keymap=item.keymap[0].name if item.keymap is not None else "",
keymap=item.keymap[0] if item.keymap is not None else "",
cursor=item.cursor or 'DEFAULT',
gizmo_group=item.widget or "",
data_block=item.data_block or "",