size updated bool

This commit is contained in:
Will McGugan
2023-02-18 09:29:27 +00:00
parent f5d64ebe8c
commit d8e17e98c2
2 changed files with 27 additions and 18 deletions

View File

@@ -435,25 +435,28 @@ class Screen(Widget):
exposed_widgets = self._compositor.reflow_visible(self, size)
if exposed_widgets:
layers = self._compositor.layers
with timer("size events"):
for widget, (
region,
_order,
_clip,
virtual_size,
container_size,
_,
) in layers:
if widget in exposed_widgets:
widget._size_updated(
region.size,
virtual_size,
container_size,
layout=False,
)
for widget, (
region,
_order,
_clip,
virtual_size,
container_size,
_,
) in layers:
if widget in exposed_widgets:
if widget._size_updated(
region.size,
virtual_size,
container_size,
layout=False,
):
widget.post_message_no_wait(
ResizeEvent(
self, region.size, virtual_size, container_size
self,
region.size,
virtual_size,
container_size,
)
)
else:

View File

@@ -2135,7 +2135,7 @@ class Widget(DOMNode):
def _size_updated(
self, size: Size, virtual_size: Size, container_size: Size, layout: bool = True
) -> None:
) -> bool:
"""Called when the widget's size is updated.
Args:
@@ -2143,6 +2143,9 @@ class Widget(DOMNode):
virtual_size: Virtual (scrollable) size.
container_size: Container size (size of parent).
layout: Perform layout if required.
Returns:
True if anything changed, or False if nothing changed.
"""
if (
self._size != size
@@ -2157,6 +2160,9 @@ class Widget(DOMNode):
self._container_size = container_size
if self.is_scrollable:
self._scroll_update(virtual_size)
return True
else:
return False
def _scroll_update(self, virtual_size: Size) -> None:
"""Update scrollbars visibility and dimensions.