mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
@@ -94,9 +94,7 @@ def arrange(
|
|||||||
)
|
)
|
||||||
dock_region = dock_region.shrink(margin).translate(align_offset)
|
dock_region = dock_region.shrink(margin).translate(align_offset)
|
||||||
add_placement(
|
add_placement(
|
||||||
_WidgetPlacement(
|
_WidgetPlacement(dock_region, null_spacing, dock_widget, top_z, True)
|
||||||
dock_region, null_spacing, dock_widget, top_z, True, False
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
dock_spacing = Spacing(top, right, bottom, left)
|
dock_spacing = Spacing(top, right, bottom, left)
|
||||||
|
|||||||
@@ -592,7 +592,6 @@ class Compositor:
|
|||||||
get_layer_index = layers_to_index.get
|
get_layer_index = layers_to_index.get
|
||||||
|
|
||||||
scroll_spacing = arrange_result.scroll_spacing
|
scroll_spacing = arrange_result.scroll_spacing
|
||||||
total_region = total_region.shrink(scroll_spacing)
|
|
||||||
|
|
||||||
# Add all the widgets
|
# Add all the widgets
|
||||||
for sub_region, margin, sub_widget, z, fixed, overlay in reversed(
|
for sub_region, margin, sub_widget, z, fixed, overlay in reversed(
|
||||||
@@ -622,21 +621,13 @@ class Compositor:
|
|||||||
constrain in ("y", "both"),
|
constrain in ("y", "both"),
|
||||||
)
|
)
|
||||||
|
|
||||||
if overlay:
|
|
||||||
clip_region = no_clip
|
|
||||||
else:
|
|
||||||
if fixed:
|
|
||||||
clip_region = sub_clip
|
|
||||||
else:
|
|
||||||
clip_region = sub_clip.shrink(scroll_spacing)
|
|
||||||
|
|
||||||
add_widget(
|
add_widget(
|
||||||
sub_widget,
|
sub_widget,
|
||||||
sub_region,
|
sub_region,
|
||||||
widget_region,
|
widget_region,
|
||||||
((1, 0, 0),) if overlay else widget_order,
|
((1, 0, 0),) if overlay else widget_order,
|
||||||
layer_order,
|
layer_order,
|
||||||
clip_region,
|
no_clip if overlay else sub_clip,
|
||||||
visible,
|
visible,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -72,9 +72,9 @@ class WidgetPlacement(NamedTuple):
|
|||||||
region: Region
|
region: Region
|
||||||
margin: Spacing
|
margin: Spacing
|
||||||
widget: Widget
|
widget: Widget
|
||||||
order: int
|
order: int = 0
|
||||||
fixed: bool
|
fixed: bool = False
|
||||||
overlay: bool
|
overlay: bool = False
|
||||||
|
|
||||||
|
|
||||||
class Layout(ABC):
|
class Layout(ABC):
|
||||||
|
|||||||
@@ -21,9 +21,8 @@ def partition(
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
result: tuple[list[T], list[T]] = ([], [])
|
result: tuple[list[T], list[T]] = ([], [])
|
||||||
append0 = result[0].append
|
appends = (result[0].append, result[1].append)
|
||||||
append1 = result[1].append
|
|
||||||
|
|
||||||
for value in iterable:
|
for value in iterable:
|
||||||
(append1 if pred(value) else append0)(value)
|
appends[1 if pred(value) else 0](value)
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ class GridLayout(Layout):
|
|||||||
.shrink(margin)
|
.shrink(margin)
|
||||||
.clip_size(cell_size)
|
.clip_size(cell_size)
|
||||||
)
|
)
|
||||||
add_placement(WidgetPlacement(region, margin, widget, 0, False, False))
|
add_placement(WidgetPlacement(region, margin, widget))
|
||||||
add_widget(widget)
|
add_widget(widget)
|
||||||
|
|
||||||
return (placements, set(widgets))
|
return (placements, set(widgets))
|
||||||
|
|||||||
@@ -580,10 +580,7 @@ class Screen(Generic[ScreenResultType], Widget):
|
|||||||
) in layers:
|
) in layers:
|
||||||
if widget in exposed_widgets:
|
if widget in exposed_widgets:
|
||||||
if widget._size_updated(
|
if widget._size_updated(
|
||||||
region.size,
|
region.size, virtual_size, container_size, layout=False
|
||||||
virtual_size,
|
|
||||||
container_size,
|
|
||||||
layout=False,
|
|
||||||
):
|
):
|
||||||
widget.post_message(
|
widget.post_message(
|
||||||
ResizeEvent(
|
ResizeEvent(
|
||||||
|
|||||||
@@ -24,8 +24,10 @@ def test_arrange_dock_top():
|
|||||||
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
|
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
|
||||||
|
|
||||||
assert result.placements == [
|
assert result.placements == [
|
||||||
WidgetPlacement(Region(0, 0, 80, 1), Spacing(), header, TOP_Z, True, False),
|
WidgetPlacement(
|
||||||
WidgetPlacement(Region(0, 1, 80, 23), Spacing(), child, 0, False, False),
|
Region(0, 0, 80, 1), Spacing(), header, order=TOP_Z, fixed=True
|
||||||
|
),
|
||||||
|
WidgetPlacement(Region(0, 1, 80, 23), Spacing(), child, order=0, fixed=False),
|
||||||
]
|
]
|
||||||
assert result.widgets == {child, header}
|
assert result.widgets == {child, header}
|
||||||
|
|
||||||
@@ -39,8 +41,10 @@ def test_arrange_dock_left():
|
|||||||
|
|
||||||
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
|
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
|
||||||
assert result.placements == [
|
assert result.placements == [
|
||||||
WidgetPlacement(Region(0, 0, 10, 24), Spacing(), header, TOP_Z, True, False),
|
WidgetPlacement(
|
||||||
WidgetPlacement(Region(10, 0, 70, 24), Spacing(), child, 0, False, False),
|
Region(0, 0, 10, 24), Spacing(), header, order=TOP_Z, fixed=True
|
||||||
|
),
|
||||||
|
WidgetPlacement(Region(10, 0, 70, 24), Spacing(), child, order=0, fixed=False),
|
||||||
]
|
]
|
||||||
assert result.widgets == {child, header}
|
assert result.widgets == {child, header}
|
||||||
|
|
||||||
@@ -54,8 +58,10 @@ def test_arrange_dock_right():
|
|||||||
|
|
||||||
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
|
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
|
||||||
assert result.placements == [
|
assert result.placements == [
|
||||||
WidgetPlacement(Region(70, 0, 10, 24), Spacing(), header, TOP_Z, True, False),
|
WidgetPlacement(
|
||||||
WidgetPlacement(Region(0, 0, 70, 24), Spacing(), child, 0, False, False),
|
Region(70, 0, 10, 24), Spacing(), header, order=TOP_Z, fixed=True
|
||||||
|
),
|
||||||
|
WidgetPlacement(Region(0, 0, 70, 24), Spacing(), child, order=0, fixed=False),
|
||||||
]
|
]
|
||||||
assert result.widgets == {child, header}
|
assert result.widgets == {child, header}
|
||||||
|
|
||||||
@@ -69,8 +75,10 @@ def test_arrange_dock_bottom():
|
|||||||
|
|
||||||
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
|
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
|
||||||
assert result.placements == [
|
assert result.placements == [
|
||||||
WidgetPlacement(Region(0, 23, 80, 1), Spacing(), header, TOP_Z, True, False),
|
WidgetPlacement(
|
||||||
WidgetPlacement(Region(0, 0, 80, 23), Spacing(), child, 0, False, False),
|
Region(0, 23, 80, 1), Spacing(), header, order=TOP_Z, fixed=True
|
||||||
|
),
|
||||||
|
WidgetPlacement(Region(0, 0, 80, 23), Spacing(), child, order=0, fixed=False),
|
||||||
]
|
]
|
||||||
assert result.widgets == {child, header}
|
assert result.widgets == {child, header}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user