[Bf-blender-cvs] [da16b30] master: Fix T38044: Filter Key Binding shows Incorrect result

Campbell Barton noreply at git.blender.org
Tue Jan 7 09:28:42 CET 2014


Commit: da16b3000b7c34ff078d66a34a6221bb38d6eca4
Author: Campbell Barton
Date:   Tue Jan 7 19:27:44 2014 +1100
https://developer.blender.org/rBda16b3000b7c34ff078d66a34a6221bb38d6eca4

Fix T38044: Filter Key Binding shows Incorrect result

===================================================================

M	release/scripts/modules/rna_keymap_ui.py

===================================================================

diff --git a/release/scripts/modules/rna_keymap_ui.py b/release/scripts/modules/rna_keymap_ui.py
index 6059015..f637b06 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




More information about the Bf-blender-cvs mailing list