From 6c2a0049e4f37ede5dae6ae771dfeb2bf8050ee4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 14 Feb 2019 11:11:53 +1100 Subject: [PATCH] Fix T61497: Old keymap causes error on startup When a keymap has an error loading, don't make it active since it will be partially loaded and not usable. --- release/scripts/modules/bpy/utils/__init__.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py index b4c8c0899ac..ce7781517b8 100644 --- a/release/scripts/modules/bpy/utils/__init__.py +++ b/release/scripts/modules/bpy/utils/__init__.py @@ -587,15 +587,12 @@ def keyconfig_init(): def keyconfig_set(filepath, report=None): from os.path import basename, splitext - from itertools import chain if _bpy.app.debug_python: print("loading preset:", filepath) keyconfigs = _bpy.context.window_manager.keyconfigs - keyconfigs_old = keyconfigs[:] - try: error_msg = "" execfile(filepath) @@ -603,17 +600,18 @@ def keyconfig_set(filepath, report=None): import traceback error_msg = traceback.format_exc() + name = splitext(basename(filepath))[0] + kc_new = keyconfigs.get(name) + if error_msg: if report is not None: report({'ERROR'}, error_msg) print(error_msg) - - kc_new = next(chain(iter(kc for kc in keyconfigs - if kc not in keyconfigs_old), (None,))) + if kc_new is not None: + keyconfigs.remove(kc_new) + return False # Get name, exception for default keymap to keep backwards compatibility. - name = splitext(basename(filepath))[0] - kc_new = keyconfigs.get(name) if kc_new is None: if report is not None: report({'ERROR'}, "Failed to load keymap %r" % filepath)