rendering: do not crash on rendering failure

This commit is contained in:
dece 2021-03-05 19:28:56 +01:00
parent 524bda5b39
commit d7a94650cb

View file

@ -215,10 +215,13 @@ def render_lines(metalines, window, max_width):
- max_width: line length limit for the pad. - max_width: line length limit for the pad.
Return: Return:
The tuple (height, width) of the resized window. The tuple of integers (error, height, width), error being a non-zero value
if an error occured during rendering, and height and width being the new
dimensions of the resized window.
""" """
num_lines = len(metalines) num_lines = len(metalines)
window.resize(num_lines, max_width) new_dimensions = num_lines, max_width
window.resize(*new_dimensions)
for line_index, metaline in enumerate(metalines): for line_index, metaline in enumerate(metalines):
meta, line = metaline meta, line = metaline
line = line[:max_width - 1] line = line[:max_width - 1]
@ -237,7 +240,10 @@ def render_lines(metalines, window, max_width):
attr = curses.color_pair(ColorPair.BLOCKQUOTE) | curses.A_ITALIC attr = curses.color_pair(ColorPair.BLOCKQUOTE) | curses.A_ITALIC
else: # includes LineType.PARAGRAPH else: # includes LineType.PARAGRAPH
attr = curses.color_pair(ColorPair.NORMAL) attr = curses.color_pair(ColorPair.NORMAL)
try:
window.addstr(line, attr) window.addstr(line, attr)
except ValueError:
return new_dimensions
if line_index < num_lines - 1: if line_index < num_lines - 1:
window.addstr("\n") window.addstr("\n")
return num_lines, max_width return new_dimensions