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()