diff --git a/system/ui/lib/list_view.py b/system/ui/lib/list_view.py index 1d48c86c39..e71c50c288 100644 --- a/system/ui/lib/list_view.py +++ b/system/ui/lib/list_view.py @@ -275,6 +275,8 @@ class ListView(Widget): self._total_height = 0 def _render(self, rect: rl.Rectangle): + self._update_layout_rects() + # Update layout and handle scrolling content_rect = rl.Rectangle(rect.x, rect.y, rect.width, self._total_height) scroll_offset = self.scroll_panel.handle_scroll(rect, content_rect) diff --git a/system/ui/lib/widget.py b/system/ui/lib/widget.py index 6bdf1a74f0..8ec610d82c 100644 --- a/system/ui/lib/widget.py +++ b/system/ui/lib/widget.py @@ -24,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: