Skip to content

Commit 957dabe

Browse files
Compute padding parameters for Box widget lazily.
1 parent 98659af commit 957dabe

File tree

1 file changed

+30
-17
lines changed

1 file changed

+30
-17
lines changed

Diff for: src/prompt_toolkit/widgets/base.py

+30-17
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
FormattedTextControl,
6060
GetLinePrefixCallable,
6161
)
62-
from prompt_toolkit.layout.dimension import AnyDimension, to_dimension
62+
from prompt_toolkit.layout.dimension import AnyDimension
6363
from prompt_toolkit.layout.dimension import Dimension as D
6464
from prompt_toolkit.layout.margins import (
6565
ConditionalMargin,
@@ -636,31 +636,44 @@ def __init__(
636636
modal: bool = False,
637637
key_bindings: KeyBindings | None = None,
638638
) -> None:
639-
if padding is None:
640-
padding = D(preferred=0)
641-
642-
def get(value: AnyDimension) -> D:
643-
if value is None:
644-
value = padding
645-
return to_dimension(value)
646-
647-
self.padding_left = get(padding_left)
648-
self.padding_right = get(padding_right)
649-
self.padding_top = get(padding_top)
650-
self.padding_bottom = get(padding_bottom)
639+
self.padding = padding
640+
self.padding_left = padding_left
641+
self.padding_right = padding_right
642+
self.padding_top = padding_top
643+
self.padding_bottom = padding_bottom
651644
self.body = body
652645

646+
def left() -> AnyDimension:
647+
if self.padding_left is None:
648+
return self.padding
649+
return self.padding_left
650+
651+
def right() -> AnyDimension:
652+
if self.padding_right is None:
653+
return self.padding
654+
return self.padding_right
655+
656+
def top() -> AnyDimension:
657+
if self.padding_top is None:
658+
return self.padding
659+
return self.padding_top
660+
661+
def bottom() -> AnyDimension:
662+
if self.padding_bottom is None:
663+
return self.padding
664+
return self.padding_bottom
665+
653666
self.container = HSplit(
654667
[
655-
Window(height=self.padding_top, char=char),
668+
Window(height=top, char=char),
656669
VSplit(
657670
[
658-
Window(width=self.padding_left, char=char),
671+
Window(width=left, char=char),
659672
body,
660-
Window(width=self.padding_right, char=char),
673+
Window(width=right, char=char),
661674
]
662675
),
663-
Window(height=self.padding_bottom, char=char),
676+
Window(height=bottom, char=char),
664677
],
665678
width=width,
666679
height=height,

0 commit comments

Comments
 (0)