pull/35545/head
Shane Smiskol 6 days ago
parent 5f7a4cdc2c
commit ec53e8079b
  1. 1
      selfdrive/ui/layouts/home.py
  2. 1
      selfdrive/ui/layouts/main.py
  3. 15
      system/ui/lib/list_view.py
  4. 5
      system/ui/lib/widget.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
)

@ -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

@ -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

@ -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:

Loading…
Cancel
Save