mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
fix horizontal layout, update virtual size
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#uber1 {
|
||||
/* border: heavy green; */
|
||||
/* border: heavy green;*/
|
||||
layout: vertical;
|
||||
/* text: on dark_green; */
|
||||
/* text: on dark_green;*/
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
|
||||
@@ -189,8 +189,8 @@ class Compositor:
|
||||
clip: Region,
|
||||
) -> None:
|
||||
widgets.add(widget)
|
||||
styles_offset = widget.styles.offset
|
||||
total_region = region
|
||||
styles_offset = widget.styles.offset
|
||||
layout_offset = (
|
||||
styles_offset.resolve(region.size, clip.size)
|
||||
if styles_offset
|
||||
|
||||
@@ -20,24 +20,6 @@ class HorizontalLayout(Layout):
|
||||
self, parent: Widget, size: Size, scroll: Offset
|
||||
) -> tuple[list[WidgetPlacement], set[Widget]]:
|
||||
|
||||
# placements: list[WidgetPlacement] = []
|
||||
# add_placement = placements.append
|
||||
|
||||
# x = y = 0
|
||||
# app = parent.app
|
||||
# for widget in parent.children:
|
||||
# styles = widget.styles
|
||||
# render_width, render_height = size
|
||||
# if styles.has_rule("height"):
|
||||
# render_height = int(styles.height.resolve_dimension(size, app.size))
|
||||
# if styles.has_rule("width"):
|
||||
# render_width = int(styles.width.resolve_dimension(size, app.size))
|
||||
# region = Region(x, y, render_width, render_height)
|
||||
# add_placement(WidgetPlacement(region, widget, order=0))
|
||||
# x += render_width
|
||||
|
||||
# return placements, set(parent.children)
|
||||
|
||||
placements: list[WidgetPlacement] = []
|
||||
add_placement = placements.append
|
||||
|
||||
@@ -53,7 +35,7 @@ class HorizontalLayout(Layout):
|
||||
region = Region(margin.left + x, margin.top, content_width, content_height)
|
||||
max_height = max(max_height, content_height + margin.height)
|
||||
add_placement(WidgetPlacement(region, widget, 0))
|
||||
x += region.x_max
|
||||
x += region.width + margin.left
|
||||
max_width = x + margin.right
|
||||
|
||||
total_region = Region(0, 0, max_width, max_height)
|
||||
|
||||
@@ -103,7 +103,7 @@ class Screen(Widget):
|
||||
send_resize = shown | resized
|
||||
|
||||
for widget, region, unclipped_region, virtual_size in self._compositor:
|
||||
widget._update_size(unclipped_region.size)
|
||||
# widget._update_size(unclipped_region.size, virtual_size)
|
||||
if widget in send_resize:
|
||||
widget.post_message_no_wait(
|
||||
events.Resize(self, unclipped_region.size, virtual_size)
|
||||
@@ -128,7 +128,7 @@ class Screen(Widget):
|
||||
await self.refresh_layout()
|
||||
|
||||
async def on_resize(self, event: events.Resize) -> None:
|
||||
self._update_size(event.size)
|
||||
self._update_size(event.size, event.virtual_size)
|
||||
await self.refresh_layout()
|
||||
event.stop()
|
||||
|
||||
|
||||
@@ -159,6 +159,10 @@ class Widget(DOMNode):
|
||||
def size(self) -> Size:
|
||||
return self._size
|
||||
|
||||
@property
|
||||
def virtual_size(self) -> Size:
|
||||
return self._virtual_size
|
||||
|
||||
@property
|
||||
def region(self) -> Region:
|
||||
return self.screen._compositor.get_widget_region(self)
|
||||
@@ -203,8 +207,9 @@ class Widget(DOMNode):
|
||||
def on_style_change(self) -> None:
|
||||
self.clear_render_cache()
|
||||
|
||||
def _update_size(self, size: Size) -> None:
|
||||
def _update_size(self, size: Size, virtual_size: Size) -> None:
|
||||
self._size = size
|
||||
self._virtual_size = virtual_size
|
||||
|
||||
def render_lines(self) -> None:
|
||||
width, height = self.size
|
||||
@@ -289,7 +294,7 @@ class Widget(DOMNode):
|
||||
return await super().post_message(message)
|
||||
|
||||
async def on_resize(self, event: events.Resize) -> None:
|
||||
self._update_size(event.size)
|
||||
self._update_size(event.size, event.virtual_size)
|
||||
self.refresh()
|
||||
|
||||
async def on_idle(self, event: events.Idle) -> None:
|
||||
|
||||
Reference in New Issue
Block a user