Revert "ui: generic hold gesture (#36893)"

This reverts commit 9768109ec1.
This commit is contained in:
Shane Smiskol
2025-12-17 01:53:17 -08:00
parent d2125aafd4
commit 3fbd928b98
2 changed files with 27 additions and 36 deletions

View File

@@ -20,8 +20,6 @@ class DialogResult(IntEnum):
class Widget(abc.ABC):
LONG_PRESS_TIME = 0.5
def __init__(self):
self._rect: rl.Rectangle = rl.Rectangle(0, 0, 0, 0)
self._parent_rect: rl.Rectangle | None = None
@@ -35,10 +33,6 @@ class Widget(abc.ABC):
self._multi_touch = False
self.__was_awake = True
# Long press state (single touch only, slot 0)
self._long_press_start_t: float | None = None
self._long_press_fired: bool = False
@property
def rect(self) -> rl.Rectangle:
return self._rect
@@ -133,28 +127,19 @@ class Widget(abc.ABC):
self._handle_mouse_press(mouse_event.pos)
self.__is_pressed[mouse_event.slot] = True
self.__tracking_is_pressed[mouse_event.slot] = True
if mouse_event.slot == 0:
self._long_press_start_t = rl.get_time()
self._long_press_fired = False
self._handle_mouse_event(mouse_event)
# Callback such as scroll panel signifies user is scrolling
elif not touch_valid:
self.__is_pressed[mouse_event.slot] = False
self.__tracking_is_pressed[mouse_event.slot] = False
if mouse_event.slot == 0:
self._long_press_start_t = None
self._long_press_fired = False
elif mouse_event.left_released:
self._handle_mouse_event(mouse_event)
if self.__is_pressed[mouse_event.slot] and mouse_in_rect and not (mouse_event.slot == 0 and self._long_press_fired):
if self.__is_pressed[mouse_event.slot] and mouse_in_rect:
self._handle_mouse_release(mouse_event.pos)
self.__is_pressed[mouse_event.slot] = False
self.__tracking_is_pressed[mouse_event.slot] = False
if mouse_event.slot == 0:
self._long_press_start_t = None
self._long_press_fired = False
# Mouse/touch is still within our rect
elif mouse_in_rect:
@@ -165,17 +150,8 @@ class Widget(abc.ABC):
# Mouse/touch left our rect but may come back into focus later
elif not mouse_in_rect:
self.__is_pressed[mouse_event.slot] = False
if mouse_event.slot == 0:
self._long_press_start_t = None
self._long_press_fired = False
self._handle_mouse_event(mouse_event)
# Long press detection
if self._long_press_start_t is not None and not self._long_press_fired:
if (rl.get_time() - self._long_press_start_t) >= self.LONG_PRESS_TIME:
self._long_press_fired = True
self._handle_long_press(gui_app.last_mouse_event.pos)
def _layout(self) -> None:
"""Optionally lay out child widgets separately. This is called before rendering."""
@@ -199,11 +175,9 @@ class Widget(abc.ABC):
self._click_callback()
return False
def _handle_long_press(self, mouse_pos: MousePos) -> None:
"""Optionally handle a long-press gesture."""
def _handle_mouse_event(self, mouse_event: MouseEvent) -> None:
"""Optionally handle mouse events. This is called before rendering."""
# Default implementation does nothing, can be overridden by subclasses
def show_event(self):
"""Optionally handle show event. Parent must manually call this"""