From 61fffb95787f7ce02bc5b6ed9b0eaa572aea83c8 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 21 Nov 2025 06:41:08 +0800 Subject: [PATCH] ui: avoid rendering off-viewport items in Scroller (#36659) avoid rendering off-viewport items in Scroller --- system/ui/widgets/scroller.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/system/ui/widgets/scroller.py b/system/ui/widgets/scroller.py index fb7f635be..9a04e8425 100644 --- a/system/ui/widgets/scroller.py +++ b/system/ui/widgets/scroller.py @@ -161,7 +161,6 @@ class Scroller(Widget): return self.scroll_panel.get_offset() def _render(self, _): - # TODO: don't draw items that are not in the viewport visible_items = [item for item in self._items if item.is_visible] # Add line separator between items @@ -219,6 +218,10 @@ class Scroller(Widget): item.set_position(round(x), round(y)) # round to prevent jumping when settling item.set_parent_rect(self._rect) + # Skip rendering if not in viewport + if not rl.check_collision_recs(item.rect, self._rect): + continue + # Scale each element around its own origin when scrolling scale = self._zoom_filter.x rl.rl_push_matrix()