Skip to content

Commit

Permalink
Make modifiers and buttons tuples for immutability (#492)
Browse files Browse the repository at this point in the history
  • Loading branch information
hmaarrfk committed Apr 18, 2024
1 parent 72094b0 commit 1254487
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 25 deletions.
30 changes: 15 additions & 15 deletions wgpu/gui/glfw.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,8 @@ def __init__(self, *, size=None, title=None, **kwargs):
glfw.set_window_iconify_callback(self._window, weakbind(self._on_iconify))

# User input
self._key_modifiers = []
self._pointer_buttons = []
self._key_modifiers = ()
self._pointer_buttons = ()
self._pointer_pos = 0, 0
self._double_click_state = {"clicks": 0}
glfw.set_mouse_button_callback(self._window, weakbind(self._on_mouse_button))
Expand Down Expand Up @@ -347,12 +347,12 @@ def _on_mouse_button(self, window, but, action, mods):
event_type = "pointer_down"
buttons = set(self._pointer_buttons)
buttons.add(button)
self._pointer_buttons = list(sorted(buttons))
self._pointer_buttons = tuple(sorted(buttons))
elif action == glfw.RELEASE:
event_type = "pointer_up"
buttons = set(self._pointer_buttons)
buttons.discard(button)
self._pointer_buttons = list(sorted(buttons))
self._pointer_buttons = tuple(sorted(buttons))
else:
return

Expand All @@ -361,8 +361,8 @@ def _on_mouse_button(self, window, but, action, mods):
"x": self._pointer_pos[0],
"y": self._pointer_pos[1],
"button": button,
"buttons": list(self._pointer_buttons),
"modifiers": list(self._key_modifiers),
"buttons": tuple(self._pointer_buttons),
"modifiers": tuple(self._key_modifiers),
"ntouches": 0, # glfw dows not have touch support
"touches": {},
}
Expand Down Expand Up @@ -415,8 +415,8 @@ def _follow_double_click(self, action, button):
"x": self._pointer_pos[0],
"y": self._pointer_pos[1],
"button": button,
"buttons": list(self._pointer_buttons),
"modifiers": list(self._key_modifiers),
"buttons": tuple(self._pointer_buttons),
"modifiers": tuple(self._key_modifiers),
"ntouches": 0, # glfw dows not have touch support
"touches": {},
}
Expand All @@ -434,8 +434,8 @@ def _on_cursor_pos(self, window, x, y):
"x": self._pointer_pos[0],
"y": self._pointer_pos[1],
"button": 0,
"buttons": list(self._pointer_buttons),
"modifiers": list(self._key_modifiers),
"buttons": tuple(self._pointer_buttons),
"modifiers": tuple(self._key_modifiers),
"ntouches": 0, # glfw dows not have touch support
"touches": {},
}
Expand All @@ -452,8 +452,8 @@ def _on_scroll(self, window, dx, dy):
"dy": -100.0 * dy,
"x": self._pointer_pos[0],
"y": self._pointer_pos[1],
"buttons": list(self._pointer_buttons),
"modifiers": list(self._key_modifiers),
"buttons": tuple(self._pointer_buttons),
"modifiers": tuple(self._key_modifiers),
}
match_keys = {"modifiers"}
accum_keys = {"dx", "dy"}
Expand All @@ -467,13 +467,13 @@ def _on_key(self, window, key, scancode, action, mods):
if modifier:
modifiers = set(self._key_modifiers)
modifiers.add(modifier)
self._key_modifiers = list(sorted(modifiers))
self._key_modifiers = tuple(sorted(modifiers))
elif action == glfw.RELEASE:
event_type = "key_up"
if modifier:
modifiers = set(self._key_modifiers)
modifiers.discard(modifier)
self._key_modifiers = list(sorted(modifiers))
self._key_modifiers = tuple(sorted(modifiers))
else: # glfw.REPEAT
return

Expand All @@ -495,7 +495,7 @@ def _on_key(self, window, key, scancode, action, mods):
ev = {
"event_type": event_type,
"key": keyname,
"modifiers": list(self._key_modifiers),
"modifiers": tuple(self._key_modifiers),
}
self._handle_event_and_flush(ev)

Expand Down
20 changes: 10 additions & 10 deletions wgpu/gui/qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,11 +228,11 @@ def is_closed(self):
# User events to jupyter_rfb events

def _key_event(self, event_type, event):
modifiers = [
modifiers = tuple(
MODIFIERS_MAP[mod]
for mod in MODIFIERS_MAP.keys()
if mod & event.modifiers()
]
)

ev = {
"event_type": event_type,
Expand All @@ -249,18 +249,18 @@ def keyReleaseEvent(self, event): # noqa: N802

def _mouse_event(self, event_type, event, touches=True):
button = BUTTON_MAP.get(event.button(), 0)
buttons = [
buttons = tuple(
BUTTON_MAP[button]
for button in BUTTON_MAP.keys()
if button & event.buttons()
]
)

# For Qt on macOS Control and Meta are switched
modifiers = [
modifiers = tuple(
MODIFIERS_MAP[mod]
for mod in MODIFIERS_MAP.keys()
if mod & event.modifiers()
]
)

ev = {
"event_type": event_type,
Expand Down Expand Up @@ -300,16 +300,16 @@ def mouseDoubleClickEvent(self, event): # noqa: N802

def wheelEvent(self, event): # noqa: N802
# For Qt on macOS Control and Meta are switched
modifiers = [
modifiers = tuple(
MODIFIERS_MAP[mod]
for mod in MODIFIERS_MAP.keys()
if mod & event.modifiers()
]
buttons = [
)
buttons = tuple(
BUTTON_MAP[button]
for button in BUTTON_MAP.keys()
if button & event.buttons()
]
)

ev = {
"event_type": "wheel",
Expand Down

0 comments on commit 1254487

Please sign in to comment.