ui: avoid rendering off-viewport items in Scroller (#36659)

avoid rendering off-viewport items in Scroller
This commit is contained in:
Dean Lee
2025-11-21 06:41:08 +08:00
committed by GitHub
parent a46af06baa
commit 61fffb9578

View File

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