Skip to content

Commit

Permalink
Fix render regression: khal Padding widh > size
Browse files Browse the repository at this point in the history
Allow to render `Padding` with GIVEN width > size.
Warn about incorrect size

Fix: pimutils/khal#1334
  • Loading branch information
Aleksei Stepanov committed Feb 12, 2024
1 parent 8d87210 commit be2ddab
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
8 changes: 8 additions & 0 deletions tests/test_padding.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,14 @@ def test_fixed(self) -> None:
widget.keypress((), "right")
self.assertEqual("Cancel", body.focus.focus.label)

def test_insufficient_space(self):
width = 10
widget = urwid.Padding(urwid.Text("Some text"), width=width)
with self.assertWarns(urwid.widget.PaddingWarning) as ctx:
canvas = widget.render((width - 1,))
self.assertEqual("Some text", str(canvas))
self.assertEqual(width - 1, canvas.cols())

def ptest(self, desc, align, width, maxcol, left, right, min_width=None):
p = urwid.Padding(None, align, width, min_width)
l, r = p.padding_values((maxcol,), False)
Expand Down
11 changes: 9 additions & 2 deletions urwid/widget/padding.py
Original file line number Diff line number Diff line change
Expand Up @@ -316,10 +316,17 @@ def render(

if self._width_type == WHSettings.CLIP:
canv = self._original_widget.render((), focus)
elif size:
maxcol = size[0] - (left + right)
if self._width_type == WHSettings.GIVEN and maxcol < self._width_amount:
warnings.warn(
f"{self}.render(size={size}, focus={focus}): too narrow size ({maxcol!r} < {self._width_amount!r})",
PaddingWarning,
stacklevel=3,
)
canv = self._original_widget.render((maxcol,) + size[1:], focus)
elif self._width_type == WHSettings.GIVEN:
canv = self._original_widget.render((self._width_amount,) + size[1:], focus)
elif size:
canv = self._original_widget.render((size[0] - (left + right),) + size[1:], focus)
else:
canv = self._original_widget.render((), focus)

Expand Down

0 comments on commit be2ddab

Please sign in to comment.