From 7ea8277e399e57937379323650d0d7888f95d80d Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 21 May 2025 19:28:04 +0800 Subject: [PATCH] system/ui: improve button press behavior (#35309) improve button press behavior --- system/ui/lib/button.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/system/ui/lib/button.py b/system/ui/lib/button.py index 4870e333df..9ca82c9732 100644 --- a/system/ui/lib/button.py +++ b/system/ui/lib/button.py @@ -68,19 +68,22 @@ def gui_button( # Set background color based on button type bg_color = BUTTON_BACKGROUND_COLORS[button_style] mouse_over = is_enabled and rl.check_collision_point_rec(rl.get_mouse_position(), rect) + is_pressed = button_id in _pressed_buttons if mouse_over: if rl.is_mouse_button_pressed(rl.MouseButton.MOUSE_BUTTON_LEFT): - # Record that this button was pressed + # Only this button enters pressed state _pressed_buttons.add(button_id) + is_pressed = True + + # Use pressed color when mouse is down over this button + if is_pressed and rl.is_mouse_button_down(rl.MouseButton.MOUSE_BUTTON_LEFT): bg_color = BUTTON_PRESSED_BACKGROUND_COLORS[button_style] - elif rl.is_mouse_button_down(rl.MouseButton.MOUSE_BUTTON_LEFT): - bg_color = BUTTON_PRESSED_BACKGROUND_COLORS[button_style] - elif rl.is_mouse_button_released(rl.MouseButton.MOUSE_BUTTON_LEFT): - # Check if this button was previously pressed - if button_id in _pressed_buttons: - result = 1 - _pressed_buttons.remove(button_id) + + # Handle button click + if rl.is_mouse_button_released(rl.MouseButton.MOUSE_BUTTON_LEFT) and is_pressed: + result = 1 + _pressed_buttons.remove(button_id) # Clean up pressed state if mouse is released anywhere if rl.is_mouse_button_released(rl.MouseButton.MOUSE_BUTTON_LEFT) and button_id in _pressed_buttons: