From 5f7a4cdc2c6ab6dc6ca010e3d851501d1138bc5a Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 12 Jun 2025 16:39:46 -0700 Subject: [PATCH] check prev --- selfdrive/ui/layouts/home.py | 1 + system/ui/lib/widget.py | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/selfdrive/ui/layouts/home.py b/selfdrive/ui/layouts/home.py index 53e1968d48..f94c78f0bb 100644 --- a/selfdrive/ui/layouts/home.py +++ b/selfdrive/ui/layouts/home.py @@ -84,6 +84,7 @@ class HomeLayout(Widget): self._render_alerts_view() def _update_layout_rects(self): + print('hi2') self.header_rect = rl.Rectangle( self._rect.x + CONTENT_MARGIN, self._rect.y + CONTENT_MARGIN, self._rect.width - 2 * CONTENT_MARGIN, HEADER_HEIGHT ) diff --git a/system/ui/lib/widget.py b/system/ui/lib/widget.py index ea58f0f15e..8ec610d82c 100644 --- a/system/ui/lib/widget.py +++ b/system/ui/lib/widget.py @@ -12,7 +12,6 @@ class DialogResult(IntEnum): class Widget(abc.ABC): def __init__(self): - self._prev_rect = rl.Rectangle(0, 0, 0, 0) self._rect: rl.Rectangle = rl.Rectangle(0, 0, 0, 0) self._is_pressed = False self._is_visible: bool | Callable[[], bool] = True @@ -25,8 +24,11 @@ class Widget(abc.ABC): self._is_visible = visible def set_rect(self, rect: rl.Rectangle) -> None: + prev_rect = self._rect self._rect = rect - self._update_layout_rects() + if (rect.x != prev_rect.x or rect.y != prev_rect.y or + rect.width != prev_rect.width or rect.height != prev_rect.height): + self._update_layout_rects() def render(self, rect: rl.Rectangle = None) -> bool | int | None: if rect is not None: @@ -54,9 +56,9 @@ class Widget(abc.ABC): def _render(self, rect: rl.Rectangle) -> bool | int | None: """Render the widget within the given rectangle.""" + def _update_layout_rects(self) -> None: + """Optionally update any layout rects on Widget rect change.""" + def _handle_mouse_release(self, mouse_pos: rl.Vector2) -> bool: - """Handle mouse release events, if applicable.""" + """Optionally handle mouse release events.""" return False - - def _update_layout_rects(self) -> None: - """Update the layout rectangles on change."""