MCPcopy
hub / github.com/Textualize/textual / _refresh_layout

Method _refresh_layout

src/textual/screen.py:1316–1396  ·  view source on GitHub ↗

Refresh the layout (can change size and positions of widgets).

(self, size: Size | None = None, scroll: bool = False)

Source from the content-addressed store, hash-verified

1314 self._result_callbacks.pop()
1315
1316 def _refresh_layout(self, size: Size | None = None, scroll: bool = False) -> None:
1317 """Refresh the layout (can change size and positions of widgets)."""
1318 size = self.outer_size if size is None else size
1319 if self.app.is_inline:
1320 size = size.with_height(self.app._get_inline_height())
1321 if not size:
1322 return
1323 self._compositor.update_widgets(self._dirty_widgets)
1324 self._update_timer.pause()
1325 ResizeEvent = events.Resize
1326
1327 try:
1328 if scroll and not self._layout_widgets:
1329 exposed_widgets = self._compositor.reflow_visible(self, size)
1330 if exposed_widgets:
1331 layers = self._compositor.layers
1332 for widget, (
1333 region,
1334 _order,
1335 _clip,
1336 virtual_size,
1337 container_size,
1338 _,
1339 _,
1340 ) in layers:
1341 if widget in exposed_widgets:
1342 if widget._size_updated(
1343 region.size, virtual_size, container_size, layout=False
1344 ):
1345 widget.post_message(
1346 ResizeEvent(
1347 region.size, virtual_size, container_size
1348 )
1349 )
1350
1351 else:
1352 hidden, shown, resized = self._compositor.reflow(self, size)
1353 self._layout_widgets.clear()
1354 Hide = events.Hide
1355 Show = events.Show
1356
1357 for widget in hidden:
1358 widget.post_message(Hide())
1359
1360 # We want to send a resize event to widgets that were just added or change since last layout
1361 send_resize = shown | resized
1362
1363 layers = self._compositor.layers
1364 for widget, (
1365 region,
1366 _order,
1367 _clip,
1368 virtual_size,
1369 container_size,
1370 _,
1371 _,
1372 ) in layers:
1373 widget._size_updated(region.size, virtual_size, container_size)

Callers 4

_on_timer_updateMethod · 0.95
_screen_resizedMethod · 0.95
_on_screen_resumeMethod · 0.95
refresh_cssMethod · 0.80

Calls 15

_compositor_refreshMethod · 0.95
HideClass · 0.85
ShowClass · 0.85
with_heightMethod · 0.80
update_widgetsMethod · 0.80
reflow_visibleMethod · 0.80
reflowMethod · 0.80
_handle_exceptionMethod · 0.80
call_laterMethod · 0.80
publishMethod · 0.80
_get_inline_heightMethod · 0.45
pauseMethod · 0.45

Tested by

no test coverage detected