Skip to content

Commit

Permalink
fix margins
Browse files Browse the repository at this point in the history
  • Loading branch information
willmcgugan committed Apr 24, 2024
1 parent 17d4c96 commit 9952d37
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
### Fixed

- Fixed `TextArea` to end mouse selection only if currently selecting https://github.com/Textualize/textual/pull/4436
- Fixed issue with margins

### Changed

Expand Down
2 changes: 1 addition & 1 deletion src/textual/_layout.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ def get_content_width(self, widget: Widget, container: Size, viewport: Size) ->
width = 0
else:
arrangement = widget._arrange(Size(0, 0))
return arrangement.total_region.right
return arrangement.spatial_map.total_region.right
return width

def get_content_height(
Expand Down
2 changes: 1 addition & 1 deletion src/textual/layouts/horizontal.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def arrange(
]
)
+ (box_margins[0].left + box_margins[-1].right),
min(
max(
[
margin_top + margin_bottom
for margin_top, _, margin_bottom, _ in box_margins
Expand Down
2 changes: 1 addition & 1 deletion src/textual/layouts/vertical.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def arrange(
]
if box_margins:
resolve_margin = Size(
min(
max(
[
margin_right + margin_left
for _, margin_right, _, margin_left in box_margins
Expand Down
4 changes: 3 additions & 1 deletion src/textual/widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -1233,9 +1233,11 @@ def get_content_width(self, container: Size, viewport: Size) -> int:
Returns:
The optimal width of the content.
"""

if self.is_container:
assert self._layout is not None
return self._layout.get_content_width(self, container, viewport)
width = self._layout.get_content_width(self, container, viewport)
return width

cache_key = container.width
if self._content_width_cache[0] == cache_key:
Expand Down
43 changes: 43 additions & 0 deletions tests/snapshot_tests/snapshot_apps/margin_multiple.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from textual.app import App, ComposeResult
from textual.containers import Container, ScrollableContainer, Horizontal
from textual.widgets import Label


class CompoundWidget(ScrollableContainer):
DEFAULT_CSS = """
#inner {
width: 1fr;
background: $panel;
align: center middle;
margin: 5;
border: green;
}
Label {
border: double yellow;
}
"""

def compose(self) -> ComposeResult:
yield Label("foo")
with Container(id="inner"):
yield Label("bar")


class MyApp(App):
CSS = """
#widget2 > Label {
display: none;
}
"""

def compose(self) -> ComposeResult:
with Horizontal():
yield CompoundWidget(id="widget1")
yield CompoundWidget(id="widget2")


if __name__ == "__main__":
MyApp().run()
6 changes: 5 additions & 1 deletion tests/snapshot_tests/test_snapshots.py
Original file line number Diff line number Diff line change
Expand Up @@ -1236,7 +1236,7 @@ def test_example_pride(snap_compare):
"""Test the pride example."""
assert snap_compare(EXAMPLES_DIR / "pride.py")


def test_button_with_console_markup(snap_compare):
"""Regression test for https://github.com/Textualize/textual/issues/4328"""
assert snap_compare(SNAPSHOT_APPS_DIR / "button_markup.py")
Expand All @@ -1249,3 +1249,7 @@ def test_width_100(snap_compare):

def test_button_with_multiline_label(snap_compare):
assert snap_compare(SNAPSHOT_APPS_DIR / "button_multiline_label.py")


def test_margin_multiple(snap_compare):
assert snap_compare(SNAPSHOT_APPS_DIR / "margin_multiple.py")

0 comments on commit 9952d37

Please sign in to comment.