sliders: fix clicking anywhere activates press (#37605)

* fix

* finish

* fix
This commit is contained in:
Shane Smiskol
2026-03-08 00:13:08 -08:00
committed by GitHub
parent 9d7edbf57a
commit 1197ea9ab9
+4 -2
View File
@@ -35,7 +35,7 @@ class SliderBase(Widget, abc.ABC):
self._scroll_x_circle = 0.0
self._scroll_x_circle_filter = FirstOrderFilter(0, 0.05, 1 / gui_app.target_fps)
self._circle_scale_filter = BounceFilter(1.0, 0.1, 1 / gui_app.target_fps)
self._click_delay = 0.075
self._circle_press_time: float | None = None
self._is_dragging_circle = False
@@ -54,6 +54,7 @@ class SliderBase(Widget, abc.ABC):
def reset(self):
# reset all slider state
self._is_dragging_circle = False
self._circle_press_time = None
self._confirmed_time = 0.0
self._confirm_callback_called = False
@@ -86,6 +87,7 @@ class SliderBase(Widget, abc.ABC):
if rl.check_collision_point_rec(mouse_event.pos, circle_button_rect):
self._start_x_circle = mouse_event.pos.x
self._is_dragging_circle = True
self._circle_press_time = rl.get_time()
elif mouse_event.left_released:
# swiped to left
@@ -143,7 +145,7 @@ class SliderBase(Widget, abc.ABC):
self._label.render(label_rect)
# circle and arrow with grow animation
circle_pressed = self._is_dragging_circle or self.confirmed or self.is_pressed
circle_pressed = self._is_dragging_circle or self.confirmed or (self._circle_press_time is not None and rl.get_time() - self._circle_press_time < 0.075)
circle_bg_txt = self._circle_bg_pressed_txt if circle_pressed else self._circle_bg_txt
scale = self._circle_scale_filter.update(self.PRESSED_SCALE if circle_pressed else 1.0)
scaled_btn_x = btn_x + (self._circle_bg_txt.width * (1 - scale)) / 2