mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
added start and end index to get_render_lines
This commit is contained in:
@@ -325,14 +325,14 @@ class Compositor:
|
||||
return Style.null()
|
||||
if widget not in self.regions:
|
||||
return Style.null()
|
||||
lines = widget.get_render_lines()
|
||||
|
||||
x -= region.x
|
||||
y -= region.y
|
||||
if y > len(lines):
|
||||
lines = widget.get_render_lines(y, y + 1)
|
||||
if not lines:
|
||||
return Style.null()
|
||||
line = lines[y]
|
||||
end = 0
|
||||
for segment in line:
|
||||
for segment in lines[0]:
|
||||
end += segment.cell_length
|
||||
if x < end:
|
||||
return segment.style or Style.null()
|
||||
@@ -422,12 +422,11 @@ class Compositor:
|
||||
if region in clip:
|
||||
yield region, clip, widget.get_render_lines()
|
||||
elif overlaps(clip, region):
|
||||
lines = widget.get_render_lines()
|
||||
new_x, new_y, new_width, new_height = intersection(region, clip)
|
||||
delta_x = new_x - region.x
|
||||
delta_y = new_y - region.y
|
||||
splits = [delta_x, delta_x + new_width]
|
||||
lines = lines[delta_y : delta_y + new_height]
|
||||
lines = widget.get_render_lines(delta_y, delta_y + new_height)
|
||||
lines = [list(divide(line, splits))[1] for line in lines]
|
||||
yield region, clip, lines
|
||||
|
||||
|
||||
@@ -507,16 +507,25 @@ class Widget(DOMNode):
|
||||
width, height = self.size
|
||||
renderable = self.render_styled()
|
||||
options = self.console.options.update_dimensions(width, height)
|
||||
|
||||
lines = self.console.render_lines(renderable, options)
|
||||
self._render_cache = RenderCache(self.size, lines)
|
||||
self._dirty_regions.clear()
|
||||
|
||||
def get_render_lines(self) -> Lines:
|
||||
"""Get segment lines to render the widget."""
|
||||
def get_render_lines(
|
||||
self, start: int | None = None, end: int | None = None
|
||||
) -> Lines:
|
||||
"""Get segment lines to render the widget.
|
||||
|
||||
Args:
|
||||
start (int | None, optional): line start index, or None for first line. Defaults to None.
|
||||
end (int | None, optional): line end index, or None for last line. Defaults to None.
|
||||
|
||||
Returns:
|
||||
Lines: A list of lists of segments.
|
||||
"""
|
||||
if self._dirty_regions:
|
||||
self._render_lines()
|
||||
lines = self._render_cache.lines
|
||||
lines = self._render_cache.lines[start:end]
|
||||
return lines
|
||||
|
||||
def check_layout(self) -> bool:
|
||||
|
||||
Reference in New Issue
Block a user