From ec53e8079b9d549f6aaab63753c49b4fda138b0d Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 12 Jun 2025 16:47:09 -0700 Subject: [PATCH] about it --- selfdrive/ui/layouts/home.py | 1 - selfdrive/ui/layouts/main.py | 1 - system/ui/lib/list_view.py | 15 +++++++-------- system/ui/lib/widget.py | 5 +---- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/selfdrive/ui/layouts/home.py b/selfdrive/ui/layouts/home.py index f94c78f0bb..53e1968d48 100644 --- a/selfdrive/ui/layouts/home.py +++ b/selfdrive/ui/layouts/home.py @@ -84,7 +84,6 @@ 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/selfdrive/ui/layouts/main.py b/selfdrive/ui/layouts/main.py index 1cca86c82e..ef33ae8983 100644 --- a/selfdrive/ui/layouts/main.py +++ b/selfdrive/ui/layouts/main.py @@ -42,7 +42,6 @@ class MainLayout(Widget): self._layouts[MainState.ONROAD].set_callbacks(on_click=self._on_onroad_clicked) def _update_layout_rects(self): - print('hi') self._sidebar_rect = rl.Rectangle(self._rect.x, self._rect.y, SIDEBAR_WIDTH, self._rect.height) x_offset = SIDEBAR_WIDTH if self._sidebar.is_visible else 0 diff --git a/system/ui/lib/list_view.py b/system/ui/lib/list_view.py index 99690e6008..1d48c86c39 100644 --- a/system/ui/lib/list_view.py +++ b/system/ui/lib/list_view.py @@ -272,12 +272,11 @@ class ListView(Widget): self.scroll_panel = GuiScrollPanel() self._font = gui_app.font(FontWeight.NORMAL) self._hovered_item = -1 + self._total_height = 0 def _render(self, rect: rl.Rectangle): - total_height = self._update_item_rects(rect) - # Update layout and handle scrolling - content_rect = rl.Rectangle(rect.x, rect.y, rect.width, total_height) + content_rect = rl.Rectangle(rect.x, rect.y, rect.width, self._total_height) scroll_offset = self.scroll_panel.handle_scroll(rect, content_rect) # Handle mouse interaction @@ -317,18 +316,18 @@ class ListView(Widget): return i return None - def _update_item_rects(self, container_rect: rl.Rectangle) -> float: + def _update_layout_rects(self): current_y = 0.0 for item in self._items: if not item.is_visible: - item.rect = rl.Rectangle(container_rect.x, container_rect.y + current_y, container_rect.width, 0) + item.rect = rl.Rectangle(self._rect.x, self._rect.y + current_y, self._rect.width, 0) continue - content_width = item.get_content_width(int(container_rect.width - ITEM_PADDING * 2)) + content_width = item.get_content_width(int(self._rect.width - ITEM_PADDING * 2)) item_height = item.get_item_height(self._font, content_width) - item.rect = rl.Rectangle(container_rect.x, container_rect.y + current_y, container_rect.width, item_height) + item.rect = rl.Rectangle(self._rect.x, self._rect.y + current_y, self._rect.width, item_height) current_y += item_height - return current_y # total height of all items + self._total_height = current_y # total height of all items def _render_item(self, item: ListItem, y: int): content_x = item.rect.x + ITEM_PADDING diff --git a/system/ui/lib/widget.py b/system/ui/lib/widget.py index 8ec610d82c..6bdf1a74f0 100644 --- a/system/ui/lib/widget.py +++ b/system/ui/lib/widget.py @@ -24,11 +24,8 @@ class Widget(abc.ABC): self._is_visible = visible def set_rect(self, rect: rl.Rectangle) -> None: - prev_rect = self._rect self._rect = rect - 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() + self._update_layout_rects() def render(self, rect: rl.Rectangle = None) -> bool | int | None: if rect is not None: