Fix T38044: Filter Key Binding shows Incorrect result
This commit is contained in:
parent
ead8b82ca7
commit
da16b3000b
Notes:
blender-bot
2023-02-14 11:24:02 +01:00
Referenced by issue #38044, Filter Key Binding shows Incorrect result
|
@ -251,51 +251,49 @@ def draw_filtered(display_keymaps, filter_type, filter_text, layout):
|
|||
"any": "any",
|
||||
}
|
||||
# KeyMapItem like dict, use for comparing against
|
||||
# attr: state
|
||||
# attr: {states, ...}
|
||||
kmi_test_dict = {}
|
||||
|
||||
# initialize? - so if a if a kmi has a MOD assigned it wont show up.
|
||||
#~ for kv in key_mod.values():
|
||||
#~ kmi_test_dict[kv] = False
|
||||
#~ kmi_test_dict[kv] = {False}
|
||||
|
||||
# altname: attr
|
||||
for kk, kv in key_mod.items():
|
||||
if kk in filter_text_split:
|
||||
filter_text_split.remove(kk)
|
||||
kmi_test_dict[kv] = True
|
||||
kmi_test_dict[kv] = {True}
|
||||
# whats left should be the event type
|
||||
if len(filter_text_split) > 1:
|
||||
return False
|
||||
elif filter_text_split:
|
||||
kmi_type = filter_text_split[0].upper()
|
||||
kmi_type_set = set()
|
||||
|
||||
if kmi_type not in _EVENT_TYPES:
|
||||
if kmi_type in _EVENT_TYPES:
|
||||
kmi_type_set.add(kmi_type)
|
||||
else:
|
||||
# replacement table
|
||||
kmi_type_test = _EVENT_TYPE_MAP.get(kmi_type)
|
||||
if kmi_type_test is None:
|
||||
if kmi_type_test is not None:
|
||||
kmi_type_set.add(kmi_type_test)
|
||||
else:
|
||||
# print("Unknown Type:", kmi_type)
|
||||
|
||||
# Partial match
|
||||
for k, v in _EVENT_TYPE_MAP.items():
|
||||
if kmi_type in k:
|
||||
kmi_type_test = v
|
||||
break
|
||||
if kmi_type in v:
|
||||
kmi_type_test = v
|
||||
break
|
||||
if (kmi_type in k) or (kmi_type in v):
|
||||
kmi_type_set.add(v)
|
||||
|
||||
if kmi_type_test is None:
|
||||
if not kmi_type_set:
|
||||
return False
|
||||
|
||||
kmi_type = kmi_type_test
|
||||
del kmi_type_test
|
||||
|
||||
kmi_test_dict["type"] = kmi_type
|
||||
kmi_test_dict["type"] = kmi_type_set
|
||||
|
||||
# main filter func, runs many times
|
||||
def filter_func(kmi):
|
||||
for kk, ki in kmi_test_dict.items():
|
||||
if getattr(kmi, kk) != ki:
|
||||
if getattr(kmi, kk) not in ki:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
|
Loading…
Reference in New Issue