@@ -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