fix horizontal layout, update virtual size

This commit is contained in:
Will McGugan
2022-03-13 15:36:18 +00:00
parent f357d2fa8f
commit 6440bac01e
5 changed files with 13 additions and 26 deletions

View File

@@ -1,7 +1,7 @@
#uber1 {
/* border: heavy green; */
/* border: heavy green;*/
layout: vertical;
/* text: on dark_green; */
/* text: on dark_green;*/
overflow-y: scroll;
}

View File

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

View File

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

View File

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

View File

@@ -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: