(self, crop: Region)
| 569 | ) |
| 570 | |
| 571 | def render_lines(self, crop: Region) -> list[Strip]: |
| 572 | self.update_virtual_size() |
| 573 | |
| 574 | page_height = self.scrollable_content_region.height |
| 575 | scroll_y = self.scroll_offset.y |
| 576 | line_count = self.line_count |
| 577 | index_to_span = self.index_to_span |
| 578 | for index in range( |
| 579 | max(0, scroll_y - page_height), |
| 580 | min(line_count, scroll_y + page_height + page_height), |
| 581 | ): |
| 582 | log_file_span = index_to_span(index) |
| 583 | if log_file_span not in self._line_cache: |
| 584 | log_file, *span = log_file_span |
| 585 | self._line_reader.request_line(log_file, index, *span) |
| 586 | if self.show_line_numbers: |
| 587 | max_line_no = self.scroll_offset.y + page_height |
| 588 | self._gutter_width = len(f"{max_line_no+1} ") |
| 589 | else: |
| 590 | self._gutter_width = 0 |
| 591 | if self.pointer_line is not None: |
| 592 | self._gutter_width += 3 |
| 593 | |
| 594 | return super().render_lines(crop) |
| 595 | |
| 596 | def render_line(self, y: int) -> Strip: |
| 597 | scroll_x, scroll_y = self.scroll_offset |
nothing calls this directly
no test coverage detected