[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