[Bf-blender-cvs] [e6c2957b107] temp-wm-event-api: De-duplicate press/release with existing tap functionality

Campbell Barton noreply at git.blender.org
Wed Jan 30 11:01:08 CET 2019


Commit: e6c2957b1079dc4f50b4a252ebd9d2cfa74a9d7f
Author: Campbell Barton
Date:   Wed Jan 30 21:03:35 2019 +1100
Branches: temp-wm-event-api
https://developer.blender.org/rBe6c2957b1079dc4f50b4a252ebd9d2cfa74a9d7f

De-duplicate press/release with existing tap functionality

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

M	tests/python/event_simulate/modules/easy_keys.py

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

diff --git a/tests/python/event_simulate/modules/easy_keys.py b/tests/python/event_simulate/modules/easy_keys.py
index 438f5ce305b..0b35a922e74 100644
--- a/tests/python/event_simulate/modules/easy_keys.py
+++ b/tests/python/event_simulate/modules/easy_keys.py
@@ -92,7 +92,8 @@ class _EventBuilder:
             self.tap()
         return self._event_gen
 
-    def tap(self):
+    def _key_press_release(self, do_press=False, do_release=False):
+        assert(do_press or do_release)
         build_keys = []
         e = self
         while e is not None:
@@ -110,6 +111,11 @@ class _EventBuilder:
                 else:
                     ty_pressed.remove(ty)
 
+                if (not do_press) and value == 'PRESS':
+                    continue
+                if (not do_release) and value == 'RELEASE':
+                    continue
+
                 shift = 'LEFT_SHIFT' in ty_pressed or 'RIGHT_SHIFT' in ty_pressed
                 ctrl = 'LEFT_CTRL' in ty_pressed or 'RIGHT_CTRL' in ty_pressed
                 shift = 'LEFT_SHIFT' in ty_pressed or 'RIGHT_SHIFT' in ty_pressed
@@ -117,14 +123,14 @@ class _EventBuilder:
                 oskey = 'OSKEY' in ty_pressed
 
                 unicode = None
-                if ctrl is False and alt is False and oskey is False:
-                    if value == 'PRESS':
+                if value == 'PRESS':
+                    if ctrl is False and alt is False and oskey is False:
                         unicode = event_types_text_from_event.get((ty, shift))
                         if unicode is None and shift:
                             # Some keys don't care about shift
                             unicode = event_types_text_from_event.get((ty, False))
-                self._event_gen._window.event_simulate(
 
+                self._event_gen._window.event_simulate(
                     type=ty,
                     value=value,
                     unicode=unicode,
@@ -136,40 +142,14 @@ class _EventBuilder:
                     **self._event_simulate_kw,
                 )
 
+    def tap(self):
+        self._key_press_release(do_press=True, do_release=True)
+
     def press(self):
-        self._key_with_value(value='PRESS')
+        self._key_press_release(do_press=True)
 
     def release(self):
-        self._key_with_value(value='RELEASE')
-
-    def _key_with_value(self, *, value):
-        build_keys = []
-        e = self
-        while e is not None:
-            build_keys.append(e._ty.upper())
-            e = e._parent
-        build_keys.reverse()
-
-        ty_pressed = set()
-        if value == 'RELEASE':
-            ty_pressed = set(build_keys)
-        for ty in build_keys:
-            if value == 'RELEASE':
-                build_keys.reverse()
-            if value == 'PRESS':
-                ty_pressed.add(ty)
-            else:
-                ty_pressed.remove(ty)
-            self._event_gen._window.event_simulate(
-                type=ty,
-                value=value,
-                ctrl='LEFT_CTRL' in ty_pressed or 'RIGHT_CTRL' in ty_pressed,
-                shift='LEFT_SHIFT' in ty_pressed or 'RIGHT_SHIFT' in ty_pressed,
-                alt='LEFT_ALT' in ty_pressed or 'RIGHT_ALT' in ty_pressed,
-                oskey='OSKEY' in ty_pressed,
-                # typically mouse coords.
-                **self._event_simulate_kw,
-            )
+        self._key_press_release(do_release=True)
 
     def __getattr__(self, attr):
         attr = event_types_alias.get(attr, attr)



More information about the Bf-blender-cvs mailing list