Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-01-07 12:27:44 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-01-07 12:27:44 +0400
commitda16b3000b7c34ff078d66a34a6221bb38d6eca4 (patch)
tree617e6543ecc1e91301b74480eb2008754230004e /release
parentead8b82ca710feffcff127328a5c225d6aaf25b1 (diff)
Fix T38044: Filter Key Binding shows Incorrect result
Diffstat (limited to 'release')
-rw-r--r--release/scripts/modules/rna_keymap_ui.py34
1 files changed, 16 insertions, 18 deletions
diff --git a/release/scripts/modules/rna_keymap_ui.py b/release/scripts/modules/rna_keymap_ui.py
index 60590158fbd..f637b06a565 100644
--- a/release/scripts/modules/rna_keymap_ui.py
+++ b/release/scripts/modules/rna_keymap_ui.py
@@ -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_test is None:
- return False
+ if (kmi_type in k) or (kmi_type in v):
+ kmi_type_set.add(v)
- kmi_type = kmi_type_test
- del kmi_type_test
+ if not kmi_type_set:
+ return False
- 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