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:
@@ -306,7 +306,7 @@ class ToolSelectPanelHelper:
|
|||||||
if km is None:
|
if km is None:
|
||||||
km = kc.keymaps.new(km_idname, space_type=cls.bl_space_type, region_type='WINDOW', tool=True)
|
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
|
keymap_fn[0] = km.name
|
||||||
|
|
||||||
# Special internal function, gives use items that contain keymaps.
|
# Special internal function, gives use items that contain keymaps.
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@@ -354,9 +354,9 @@ class ToolSelectPanelHelper:
|
|||||||
for context_mode_test, tools in cls.tools_all():
|
for context_mode_test, tools in cls.tools_all():
|
||||||
if context_mode_test == context_mode:
|
if context_mode_test == context_mode:
|
||||||
for item in cls._tools_flatten_with_keymap(tools):
|
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', []))
|
# 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
|
# 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 = ToolSelectPanelHelper._tool_active_from_context(context, space_type, create=True)
|
||||||
tool.setup(
|
tool.setup(
|
||||||
name=item.text,
|
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',
|
cursor=item.cursor or 'DEFAULT',
|
||||||
gizmo_group=item.widget or "",
|
gizmo_group=item.widget or "",
|
||||||
data_block=item.data_block or "",
|
data_block=item.data_block or "",
|
||||||
|
|||||||
Reference in New Issue
Block a user