mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
fox for nested heights
This commit is contained in:
@@ -2175,8 +2175,14 @@ class Widget(DOMNode):
|
|||||||
|
|
||||||
if layout:
|
if layout:
|
||||||
self._layout_required = True
|
self._layout_required = True
|
||||||
if isinstance(self._parent, Widget):
|
for ancestor in self.ancestors:
|
||||||
self._parent._clear_arrangement_cache()
|
if not isinstance(ancestor, Widget):
|
||||||
|
break
|
||||||
|
if ancestor.styles.auto_dimensions:
|
||||||
|
for ancestor in self.ancestors_with_self:
|
||||||
|
if isinstance(ancestor, Widget):
|
||||||
|
ancestor._clear_arrangement_cache()
|
||||||
|
break
|
||||||
|
|
||||||
if repaint:
|
if repaint:
|
||||||
self._set_dirty(*regions)
|
self._set_dirty(*regions)
|
||||||
|
|||||||
64
tests/snapshot_tests/snapshot_apps/nested_auto_heights.py
Normal file
64
tests/snapshot_tests/snapshot_apps/nested_auto_heights.py
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from textual.app import App, ComposeResult
|
||||||
|
from textual.containers import Vertical
|
||||||
|
from textual.widgets import Static
|
||||||
|
|
||||||
|
|
||||||
|
class NestedAutoApp(App[None]):
|
||||||
|
CSS = """
|
||||||
|
Screen {
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#my-static-container {
|
||||||
|
border: heavy lightgreen;
|
||||||
|
background: green;
|
||||||
|
height: auto;
|
||||||
|
max-height: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
#my-static-wrapper {
|
||||||
|
border: heavy lightblue;
|
||||||
|
background: blue;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#my-static {
|
||||||
|
border: heavy gray;
|
||||||
|
background: black;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
BINDINGS = [
|
||||||
|
("1", "1", "1"),
|
||||||
|
("2", "2", "2"),
|
||||||
|
("q", "quit", "Quit"),
|
||||||
|
]
|
||||||
|
|
||||||
|
def compose(self) -> ComposeResult:
|
||||||
|
self._static = Static("", id="my-static")
|
||||||
|
yield Vertical(
|
||||||
|
Vertical(
|
||||||
|
self._static,
|
||||||
|
id="my-static-wrapper",
|
||||||
|
),
|
||||||
|
id="my-static-container",
|
||||||
|
)
|
||||||
|
|
||||||
|
def action_1(self) -> None:
|
||||||
|
self._static.update(
|
||||||
|
"\n".join(f"Lorem {i} Ipsum {i} Sit {i}" for i in range(1, 21))
|
||||||
|
)
|
||||||
|
|
||||||
|
def action_2(self) -> None:
|
||||||
|
self._static.update("JUST ONE LINE")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app = NestedAutoApp()
|
||||||
|
app.run()
|
||||||
@@ -101,7 +101,9 @@ def test_header_render(snap_compare):
|
|||||||
|
|
||||||
|
|
||||||
def test_list_view(snap_compare):
|
def test_list_view(snap_compare):
|
||||||
assert snap_compare(WIDGET_EXAMPLES_DIR / "list_view.py", press=["tab", "down", "down", "up"])
|
assert snap_compare(
|
||||||
|
WIDGET_EXAMPLES_DIR / "list_view.py", press=["tab", "down", "down", "up"]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_textlog_max_lines(snap_compare):
|
def test_textlog_max_lines(snap_compare):
|
||||||
@@ -160,6 +162,11 @@ def test_offsets(snap_compare):
|
|||||||
assert snap_compare("snapshot_apps/offsets.py")
|
assert snap_compare("snapshot_apps/offsets.py")
|
||||||
|
|
||||||
|
|
||||||
|
def test_nested_auto_heights(snap_compare):
|
||||||
|
"""Test refreshing widget within a auto sized container"""
|
||||||
|
assert snap_compare("snapshot_apps/nested_auto_heights.py", press=["1", "2"])
|
||||||
|
|
||||||
|
|
||||||
# --- Other ---
|
# --- Other ---
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user