Skip to content

Commit d251ea4

Browse files
committed
Move set timer to internal trigger function
1 parent 1ad1c70 commit d251ea4

1 file changed

Lines changed: 17 additions & 11 deletions

File tree

pygame_menu/menu.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ class Menu(Base):
160160
_index: int
161161
_joy_event: int
162162
_joy_event_repeat: int
163+
_joy_event_timer: bool
163164
_joystick: bool
164165
_keyboard: bool
165166
_keyboard_ignore_nonphysical: bool
@@ -559,6 +560,7 @@ def __init__(
559560
pygame.joystick.Joystick(i).init()
560561
self._joy_event = 0
561562
self._joy_event_repeat = pygame.NUMEVENTS - 1
563+
self._joy_event_timer = True
562564

563565
# Init keyboard
564566
self._keyboard = keyboard_enabled
@@ -2675,6 +2677,16 @@ def get_last_update_mode(self) -> list[str]:
26752677
return [_events.MENU_LAST_NONE]
26762678
return self._current._last_update_mode
26772679

2680+
def _trigger_joy_repeat_timer(self, milis: int = 0) -> None:
2681+
"""
2682+
Trigger joy repeat timer.
2683+
2684+
:param milis: Number of miliseconds to repeat
2685+
"""
2686+
if not self._current._joy_event_timer:
2687+
return
2688+
pygame.time.set_timer(self._current._joy_event_repeat, milis)
2689+
26782690
def update(self, events: EventVectorType) -> bool:
26792691
"""
26802692
Update the status of the Menu using external events. The update event is
@@ -2912,37 +2924,31 @@ def update(self, events: EventVectorType) -> bool:
29122924
if self._current._joy_event:
29132925
sel = self._current._handle_joy_event(True)
29142926
if self._current._joy_event == prev:
2915-
pygame.time.set_timer(
2916-
self._current._joy_event_repeat, self._ctrl.joy_repeat
2917-
)
2927+
self._trigger_joy_repeat_timer(self._ctrl.joy_repeat)
29182928
else:
2919-
pygame.time.set_timer(
2920-
self._current._joy_event_repeat, self._ctrl.joy_delay
2921-
)
2929+
self._trigger_joy_repeat_timer(self._ctrl.joy_delay)
29222930
if sel:
29232931
self._current._last_update_mode.append(
29242932
_events.MENU_LAST_JOY_REPEAT
29252933
)
29262934
updated = True
29272935
break
29282936
else:
2929-
pygame.time.set_timer(self._current._joy_event_repeat, 0)
2937+
self._trigger_joy_repeat_timer(self._ctrl.joy_delay)
29302938

29312939
# User repeats previous joy event input
29322940
elif event.type == self._current._joy_event_repeat:
29332941
if self._current._joy_event:
29342942
sel = self._current._handle_joy_event(True)
2935-
pygame.time.set_timer(
2936-
self._current._joy_event_repeat, self._ctrl.joy_repeat
2937-
)
2943+
self._trigger_joy_repeat_timer(self._ctrl.joy_repeat)
29382944
if sel:
29392945
self._current._last_update_mode.append(
29402946
_events.MENU_LAST_JOY_REPEAT
29412947
)
29422948
updated = True
29432949
break
29442950
else:
2945-
pygame.time.set_timer(self._current._joy_event_repeat, 0)
2951+
self._trigger_joy_repeat_timer()
29462952

29472953
# Select widget by clicking
29482954
elif (

0 commit comments

Comments
 (0)